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>