在不使用ViewModel方法的情况下传递两个模型进行查看

时间:2014-09-05 05:24:08

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

我想知道可以在视图中同时传递两个模型而不使用ViewModel方法吗?

4 个答案:

答案 0 :(得分:4)

我猜你可以使用Tuple<T1, T2> ...

public ActionResult Index()
{
    return View(new Tuple<Foo, Bar>(new Foo(), new Bar()));
}

查看:

@model Tuple<Foo, Bar>

...

<div class="container">
    Foo value = @Model.Item1.Value
    <hr />
    Bar value = @Model.Item2.Value
</div>

Live Demo

答案 1 :(得分:4)

如果您不需要担心绑定,那么您可以使用ViewBag,例如

public ActionResult Index()
{
    ViewBag.FirstModel = new FirstModel();
    ViewBag.SecondModel = new SecondModel();

    return View();
}

然后通过ViewBag在视图中提供模型。

答案 2 :(得分:0)

使用TempDataViewData。您甚至可以使用Session或Cache。我更喜欢ViewModel方法,因为它是它的目的。我倾向于只使用TempData或ViewData来填写选择列表。

答案 3 :(得分:0)

其他可能的方法是使用以下

的ViewData ViewBag TempData的

以下是每个代码示例,请看一下。希望它有所帮助

Passing multiple models to view using ViewData, ViewBag, TempData