- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于除琐碎 View 模型之外的任何内容,我使用 View 模型构建器来处理生成 View 模型对象的责任。现在,我使用构建器的构造函数将构建器注入(inject)到我的 Controller 中,但这有点味道,因为构建器实际上依赖于正在执行的操作方法。我心里有两个想法。第一个涉及自定义 ActionFilter,允许我使用适当的构建器来装饰每个操作方法。第二种方法是添加 View 方法的重写,该方法可以接受泛型。
这就是我的代码目前的样子。请注意,构建器是通过 ctor 注入(inject)的。
[HttpGet, ImportModelStateFromTempData, Compress]
public ActionResult MyAccount()
{
return View(accountBuilder.Build());
}
以下是选项之一:
[HttpGet, ImportModelStateFromTempData, Compress, ViewModelBuilder(typeof(IMyAccountViewModelBuilder)]
public ActionResult MyAccount()
{
return View();
}
或者选项二:
[HttpGet, ImportModelStateFromTempData, Compress]
public ActionResult MyAccount()
{
return View<IMyAccountViewModelBuilder>();
}
任何想法或建议都会很棒!
最佳答案
我认为您可以将构建正确 View 模型的责任转移给构建器。您可以将要构建的 ViewModel 类型作为参数传递,例如:
[HttpGet, ImportModelStateFromTempData, Compress]
public ActionResult MyAccount()
{
return View( AccountBuilder.Build<MyAccountViewModel>( ) );
}
上述方法使您可以在操作内渲染的 View 中拥有更大的灵 active (如果您的 Controller 应该在 3 个 View 之间进行选择来显示,并且每个 View 都有不同的 View 模型,会发生什么?过滤器解决方案开始变得复杂.)
View 方法的职责是获取模型并使用它渲染 View 。 Controller 负责构建模型。因此,作为一个有点正统的人,我建议避免将模型构建逻辑放在 View 方法中:)。
关于asp.net-mvc - ASP.NET MVC ViewModelBuilder 建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2861333/
这个问题在这里已经有了答案: C#: cast to generic interface with base type (3 个答案) 关闭 9 年前。 绞尽脑汁也无济于事,不知道有没有人能帮上忙?
对于除琐碎 View 模型之外的任何内容,我使用 View 模型构建器来处理生成 View 模型对象的责任。现在,我使用构建器的构造函数将构建器注入(inject)到我的 Controller 中,但
我是一名优秀的程序员,十分优秀!