gpt4 book ai didi

asp.net-mvc - asp.net mvc-将部分数据模型传递到部分 View

转载 作者:行者123 更新时间:2023-12-04 05:20:31 24 4
gpt4 key购买 nike

我希望构建一个获取模型列的局部 View 并进行打印。
像这样的东西:

在 View 中:

@model IEnumerable<products_comparison.Models.Product>
@{
ViewBag.Title = "Index";

var Brand = (from r in Model
select r.Brand).Distinct();
}
<h2>
Index</h2>

@Html.RenderPartial("_DisplayAttribute",Brand)

在局部 View 中:
<table>
<tr>
<th>
Brand
</th>
</tr>
@foreach (var row in Model)
{
<tr>
<td>
@Html.DisplayFor(r => row)
</td>
</tr>
}
</table>

我遇到了一些问题:
  • 编译器不允许我将Barnd发送到局部 View 。
  • 如果您查看部分 View 代码,您将看到单词Brand,这是列名。我不希望在局部 View 中对“品牌”一词进行硬编码,相反,我喜欢在其中使用列名。
  • 在局部 View 中,我需要放置@model products_comparison.Models.Product,但我不这样做
    要发送孔表。我只想发送一列-但是我不知道该放在那儿..

  • 谢谢!

    编辑:

    只是为了澄清一件事,我希望 View 将为表中的每一列(无论如何对于表中的大多数列)调用相同的局部 View ,并且每次我发送不同的列(不同的值列为精确的)。

    最佳答案

    首先进行重构,然后将正确的逻辑放在正确的位置。此LINQ查询在 View 中完全不做任何事情。 View 不应该执行任何LINQ查询或任何提取数据的操作。 View 应该以 View 模型的形式与从 Controller 操作传递给它的数据一起使用。 Controller Action 将构建并传递您为 View 定义的适应的 View 模型。

    因此,一如既往,您首先定义一个 View 模型,该模型将适合您的 View 需求:

    public class MyViewModel
    {
    public IEnumerable<Brand> Brands { get; set; }
    }

    然后编写一个 Controller Action ,该 Action 将填充此 View 模型并将其传递给 View :
    public ActionResult Foo()
    {
    IEnumerable<products_comparison.Models.Product> products = ...
    var model = new MyViewModel
    {
    Brands = (from r in Model select r.Brand).Distinct()
    };
    return View(model);
    }

    然后是一个 View :
    @model MyViewModel
    <table>
    <tr>
    <th>
    Brand
    </th>
    </tr>
    @Html.DisplayFor(x => x.Brands)
    </table>

    最后,您可以定义一个相应的显示模板,该模板将自动为 View 模型的 Brands集合( ~/Views/Shared/DisplayTemplates/Brand.cshtml)的每个元素呈现:
    @model Brand
    <tr>
    <td>
    @Html.DisplayForModel()
    </td>
    </tr>

    关于asp.net-mvc - asp.net mvc-将部分数据模型传递到部分 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8724847/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com