是的,我知道在ASP.NET MVC中你必须使用ViewModels。但我厌倦了编写无数的ViewModel类。此外,我想将验证模型传递给视图,而不是我必须传递整个ViewModel,所以我得到像
这样的丑陋代码Html.TextBoxFor(m => m.TopicModel.Title)
而不是
Html.TextBoxFor(m => m.Title)
我真的很喜欢RoR的@instance_variables
,您只需传递所需的所有变量,而无需为此创建新类。
我该怎么做?我认为这是不可能的,因为我尝试了一切,甚至是C#4 dynamic
功能。
有什么想法吗?
答案 0 :(得分:3)
您可以使用ViewData字典:
public ActionResult DoSomething()
{
ViewData["Message"] = "Hello World";
return View();
}
访问:
<%= ViewData["Message"] %>
您也可以切换到使用动态:
<%@ Page Inherits="ViewPage<dynamic>" %>
我认为应该允许你这样做:
public ActionResult DoSomething()
{
return View(new { Message = "Hello" });
}
访问:
<%= Model.Message %>
因为动态在运行时而不是编译时被解析,所以它应该允许你在视图中抛出一个匿名对象。
答案 1 :(得分:0)
如果您不喜欢使用视图模型,则可以自行传递域模型。为什么不呢?
<%@ Page Inherits="ViewPage<TopicModel>" %>
Html.TextBoxFor(m => m.Title)