而不是:
public ActionResult Index()
{
ViewData["foo"] = _repository.GetFoos().ToList();
ViewData["bar"] = new string[] { "blah" };
ViewData["baz"] = "";
return View();
}
然后:
public ActionResult Index(string baz)
{
// Do stuff...
ViewData["foo"] = _repository.GetFoos().ToList();
ViewData["bar"] = new string[] { "blah" };
ViewData["baz"] = baz;
return View();
}
我正在考虑通过使ViewData更加结构化来减少拼写错误的方法,而不必添加(还)另一个ViewModel类。我想出了以下内容:
public ActionResult Index()
{
var foo = _repository.GetFoos().ToList();
var bar = new string[] { "blah" };
var baz = null;
ViewData = new ViewDataDictionary {
{"foo", foo},
{"bar", bar},
{"baz", baz }
};
return View();
}
public ActionResult Index(string baz)
{
var foo = _repository.GetFoos().ToList();
var bar = new string[] { "blah" };
var baz = null;
// Do Stuff...
ViewData = new ViewDataDictionary {
{"foo", foo},
{"bar", bar},
{"baz", baz}
};
return View();
}
像这样覆盖ViewData是个坏主意吗?我很确定这不会导致RenderPartials出现问题,但是我不能再在视图中调用RenderAction吗?
答案 0 :(得分:1)
覆盖它是一个坏主意 这样的ViewData?
没有。这不是坏主意。但这并不常见。
我很确定 这不会导致问题 RenderPartials,但我不会再这样做了 能够在一个中调用RenderAction 查看?
你应该对这一切都很好。
但是在你的代码中有一个llok而不会覆盖ViewData。
你没有消除任何拼写错误 r。在这两种情况下,您都有相同数量的魔术字符串。
所以我仍然建议添加ViewModel 。为简单起见,只需在控制器类中定义ViewModel,这样您就可以在一个地方完成所有操作。