相关疑难解决方法(0)

有效避免ASP.NET MVC中的ViewBag

你如何处理避免ViewBag的问题,因为它具有动态错误的风险,但也避免每次都要填充新的ViewModel并将其传回视图.例如,我不希望必须更改后续内容以暴露ViewBag中通常填充的常见数据.

[HttpGet]
void Index() 
{ 
    return View(); 
}
Run Code Online (Sandbox Code Playgroud)

[HttpGet]
void Index() 
{
    var messages = new MessageCollection();
    messages.AddError("Uh oh!");

    return View(messages);
}
Run Code Online (Sandbox Code Playgroud)

在管道中我将添加一个像ViewBag这样的属性,它是自定义的和强类型的,但它在Controller和View中都有优雅的外观.当我不需要特定的ViewModel时,我宁愿这样做......

[HttpGet]
void Index()
{
    Messages.AddError("Uh oh!");

    return View();
}
Run Code Online (Sandbox Code Playgroud)

而在视图方面,而不是@((IMessageCollection)ViewBag.Messages).Errors id更像是@ Messages.Errors,它是强类型的并且随处可用.另外,我不想只是在Razor视图顶部的代码块中将其抛出.

在WebForms中,我会做一些事情,比如把它作为一个基页,然后有一个usercontrol,可以根据需要隐藏或显示在页面上.由于Controller与View分离,我不确定如何复制类似的行为.

这是可能的还是最好的设计方法是什么?

谢谢,斯科特

architecture asp.net-mvc viewmodel viewbag

5
推荐指数
1
解决办法
4110
查看次数

标签 统计

architecture ×1

asp.net-mvc ×1

viewbag ×1

viewmodel ×1