MVC4 ViewBag or ViewModel or?



我需要将数据库中两个不同模型的列表形式的数据发送到MVC4项目中的视图。

像这样:

控制器

:

public ActionResult Index()
{
    Entities db = new Entities();
    ViewData["Cats"] = db.Cats.toList();
    ViewData["Dogs"] = db.Dogs.toList();
    return View();
}

视图 :

@* LIST ONE *@
<table>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.ListOneColOne)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.ListOneColTwo)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.ListOneColThree)
        </th>
    </tr>
@foreach (var item in @ViewData["Cats"]) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.ListOneColOne)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ListOneColTwo)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ListOneColThree)
        </td>
    </tr>

@* LIST TWO *@
<table>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.ListTwoColOne)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.ListTwoColTwo)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.ListTwoColThree)
        </th>
    </tr>
@foreach (var item in @ViewData["Dogs"]) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.ListTwoColOne)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ListTwoColTwo)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ListTwoColThree)
        </td>
    </tr>

View将显示两个列表,每个模型一个列表。

我不确定做这件事最有效的方法是什么?

视图模型?

视讯系统/Viewbag吗?

别的吗?

(请不要有第三方建议)

更新 :

进一步,我已经尝试了一个多小时,现在实现答案建议一个List<T>视图模型没有任何运气。我相信这是由于我的视图模型看起来像这样的事实:

public class GalleryViewModel
{
    public Cat cat { get; set; }
    public Dog dog { get; set; }
}

试着解释你的问题和你的目标,这样我们就(具体地)知道你想要做什么。

我认为这意味着你有两个列表,你想把它们发送给一个视图。一种方法是将两个列表放入模型并将模型发送给视图,但是您似乎已经指定了您已经有两个模型,因此我将采用该假设。

控制器

public ActionResult Index()
{
    ModelA myModelA = new ModelA();
    ModelB myModelB = new ModelB();
    IndexViewModel viewModel = new IndexViewModel();
    viewModel.myModelA = myModelA;
    viewModel.myModelB = myModelB;
    return View(viewModel);
}

public class IndexViewModel
{
    public ModelA myModelA { get; set; }
    public ModelB myModelB { get; set; }
}

public class ModelA
{
    public List<String> ListA { get; set; }
}
public class ModelB
{
    public List<String> ListB { get; set; }
}
<<p> 视图/strong>
@model IndexViewModel
@foreach (String item in model.myModelA)
{
    @item.ToString()
}

(对不起,如果我的c#生锈了)

相关内容

  • 没有找到相关文章

最新更新