MVC发送模型进行查看而不返回视图(模型)

时间:2014-05-07 19:50:14

标签: asp.net-mvc

我的网站只有一个包含多个部分视图的视图。 (标签)。

我想从我的动作向我的视图发送一个对象模型(列表),但因为我只使用一个视图会干扰另一个模型,所以我无法将模型发送到视图。可以将模型返回到我的部分视图,我想要模型,但这会破坏整个网站,(只显示特定的部分视图而不是其他部分视图)。我能想到的唯一另一种方式是viewbag,但我已经尝试过了,并且我没有表现得像我想要的那样。

我试图传递给我的视图的文件必须具有很高的安全性。还有其他什么方法?

2 个答案:

答案 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.ActionHtml.RenderAction(而不是直接通过浏览器中的网址)调用此操作,因此您的数据与操作一样安全叫它。