我的网站只有一个包含多个部分视图的视图。 (标签)。
我想从我的动作向我的视图发送一个对象模型(列表),但因为我只使用一个视图会干扰另一个模型,所以我无法将模型发送到视图。可以将模型返回到我的部分视图,我想要模型,但这会破坏整个网站,(只显示特定的部分视图而不是其他部分视图)。我能想到的唯一另一种方式是viewbag,但我已经尝试过了,并且我没有表现得像我想要的那样。
我试图传递给我的视图的文件必须具有很高的安全性。还有其他什么方法?
答案 0 :(得分:0)
您可以选择让它们全部继承自同一个BaseViewModel
类,其中一些属性保留为null,不需要该信息的页面。如果不了解您想要发送的不同类型的模型,就很难更具体。
然后每个动作都会使用:
public ActionResult Index()
{
var viewModel = new BaseViewModel();
return View(viewModel);
}
public ActionResult ShowList()
{
var viewModel = new BaseViewModel
{
ListProp = new MyList()
};
return View(viewModel);
}
答案 1 :(得分:0)
使用儿童行动;它们是为这种东西设计的:
<强> FooController.cs 强>
[ChildActionOnly]
public ActionResult GetListOfStuff()
{
// fetch listOfStuff
return PartialView(listOfStuff);
}
<强>查看/富/ GetListOfStuff.cshtml 强>
@model IEnumerable<Path.To.StuffModel>
@* HTML for displaying the list here *@
<强>视图\富\ TheRealAction.cshtml 强>
@model Path.To.SomeOtherModel
...
@Html.Action("GetListOfStuff", "Foo")
注意:ChildActionOnly
确保只能使用Html.Action
或Html.RenderAction
(而不是直接通过浏览器中的网址)调用此操作,因此您的数据与操作一样安全叫它。