在ASP.NET MVC RC1中,ViewResult
是ActionResult
的一个子类,它表示将视图呈现给响应的一种结果类型。当控制器方法返回View()
时,实际上返回的就是一个ViewResult
对象。
有几种方法可以从ViewResult
中获取模型数据:
public ActionResult MyAction()
{
var model = new MyModel { Property1 = "Value1", Property2 = "Value2" };
return View(model);
}
// 在视图中获取模型数据
@model MyModel
<div>@Model.Property1</div>
<div>@Model.Property2</div>
// 在控制器中
public ActionResult MyAction()
{
var model = new MyModel { Property1 = "Value1", Property2 = "Value2" };
ViewData.Model = model;
return View();
}
// 在视图中
@{
var model = ViewData.Model as MyModel;
}
<div>@model.Property1</div>
<div>@model.Property2</div>
如果你有一个ViewResult
实例,可以这样获取模型:
public ActionResult MyAction()
{
var model = new MyModel { Property1 = "Value1", Property2 = "Value2" };
var viewResult = View(model);
// 获取模型
var viewModel = viewResult.ViewData.Model as MyModel;
// 也可以直接返回viewResult
return viewResult;
}
在单元测试场景中,你可能需要检查返回的ViewResult中的模型数据:
[TestMethod]
public void MyAction_Returns_CorrectModel()
{
// Arrange
var controller = new MyController();
// Act
var result = controller.MyAction() as ViewResult;
// Assert
Assert.IsNotNull(result);
var model = result.Model as MyModel;
Assert.IsNotNull(model);
Assert.AreEqual("ExpectedValue", model.Property1);
}
@model
指令来指定模型类型Model
属性访问模型数据,而不需要显式转换问题:为什么我的Model在视图中为null?
可能原因:
解决方案:
通过以上方法,你可以有效地从ASP.NET MVC RC1的ViewResult中获取和使用模型数据。
云+社区技术沙龙[第10期]
TVP技术夜未眠
链上产业系列活动
“中小企业”在线学堂
TVP技术夜未眠
中国数据库前世今生
TVP技术夜未眠
“中小企业”在线学堂
TVP活动