首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不重复与表- MVC视图中的所有其他值相同的列值。

不重复与表- MVC视图中的所有其他值相同的列值。
EN

Stack Overflow用户
提问于 2014-12-11 16:02:47
回答 3查看 1.1K关注 0票数 0

我有一个棘手的问题,无法弄清楚如何摆脱它。

我有一个需求,需要以表格形式显示MVC视图,如下所示:

发票号码 ProductName

111

 /T1459.3-1991商品商品、产品、商品

 /T1583-1991商品商品、商品、技术等

 /T1291-1996商品、商品、技术等

113 --商品

这样做的想法是,如果产品列表属于相同的发票号,则不要重复发票号

下面这样简单的预测重复了发票号:

代码语言:javascript
复制
@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.InvoiceNumber)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.ProductName)
    </td>

</tr>

}

我可以根据我的要求改变模型。

如有任何帮助,将不胜感激。

EN

回答 3

Stack Overflow用户

发布于 2014-12-11 16:08:23

这不是完整的例子,但您必须按照下面的方法来解决问题。

代码语言:javascript
复制
@{
   var previousItem = "";
}
@foreach (var item in Model) {
<tr>
    <td>
        @if(previousItem != item.InvoiceNumber) 
        {
        previousItem = item.InvoiceNumber.ToString();
        @Html.DisplayFor(modelItem => item.InvoiceNumber)
        }

    </td>
    <td>
        @Html.DisplayFor(modelItem => item.ProductName)
    </td>

</tr>
}
票数 1
EN

Stack Overflow用户

发布于 2014-12-11 16:13:54

思考这个问题的最好方法不是如何避免重复,而是从一开始就把视图模型塑造成这样。

例如,你的模型应该是..。

代码语言:javascript
复制
var model = new Dictionary<string,List<string>>();

那你就可以..。

代码语言:javascript
复制
@foreach(var item in Model)
{
<tr>
     <td> @item.Key </td>

     <td>
     @foreach(var product in item.Value)
     {
          @product<br/>
     }
     </td>
<tr>
}
票数 1
EN

Stack Overflow用户

发布于 2014-12-11 16:14:07

使用Linq,您可以对项目进行分组:

代码语言:javascript
复制
@foreach (var group in Model.GroupBy(x => x.InvoiceNumber)) {
<!-- first group item -->
<tr>
    <td>
        @Html.DisplayFor(modelItem => group.First().InvoiceNumber)
    </td>
    <td>
        @Html.DisplayFor(modelItem => group.First().ProductName)
    </td>

</tr>
foreach(var item in group.Skip(1)){
<tr>
    <td>
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.ProductName)
    </td>

</tr>
}}

或者作为单行选择:

代码语言:javascript
复制
@foreach (var group in Model.GroupBy(x => x.InvoiceNumber)) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => group.Key)
    </td>
    <td>
        foreach(var item in group){
            <p>@Html.DisplayFor(modelItem => item.ProductName)</p>
        }
    </td>

</tr>
}

我承认,对于这个例子来说,这可能有点过分,但是我想看到不同的方法是很好的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27427207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档