MVC中的@model与Model
@model模型定义
使用@model关键字可以定义一个Action里所对应的一个模型(经常可以叫他实体类),其实是对动态变量进行实例化,这样就可以直接在cshtml文件中调用“Model”变量。而这个模型的实例,需要通过Controller进行传输,如果没有则“Model”将为null。模型可以是一个实体类,也可以是一个列表实例,字典对象都可以进行定义,但是和Controller中的Action传回来的实例一定要一样,否则将会出现错误。
Model 定义
MVC的第一个字母M是Model,承载着View层和Controller之间的数据传输,是数据传输的载体,通过Model层,解偶了View层和Controller层。MVC框架中Model层的主要关注点是如何把请求的数据自动装配成Action所需要的bean,除此外,框架Model层还可以提供复合bean自动装配、输入校验、本地化及国际化、字符集编码转换、多重输出等功能。
(1)定义Model实体
public class SearchWithFundingList
{
/// <summary>
/// 方案分类
/// </summary>
public int ProjectCategory { get; set; }
/// <summary>
/// 发起时间小
/// </summary>
public string MinAddDate { get; set; }
/// <summary>
/// 发起时间大
/// </summary>
public string MaxAddDate { get; set; }
/// <summary>
/// 状态
/// </summary>
public int State { get; set; }
/// <summary>
/// 昵称
/// </summary>
public string NickName { get; set; }
/// <summary>
/// 用户id
/// </summary>
public int Mid { get; set; }
}
(2)传递Model
private SearchWithFundingList GetFormWithFundingNow(int id, int uid)
{
SearchWithFundingList model = new SearchWithFundingList();
model.Mid = uid;
model.State = WithFundingStateKey.Doing;
model.ProjectCategory = id;
return model;
}
注意:一定要在最后return 实体,不然前台的Model实体是null
(3)具体调用
在页面代码最上面添加上实体的声明
@{Layout = null;}
@model StockFunds.Entities.DTO.SearchWithFundingList
接下来就可以在页面里使用Model(这里的实体就是指SearchWithFundingList实体),并且此时的Model已经是强类型了,我们可以点出具体的属性,非常方便<span class="state">Model.State</span>元</span>