c# - 在循环内使用 .Where().FirstOrDefault() 时,ASP MVC 中的名称不唯一

标签 c# asp.net-mvc razor

我有以下 ASP MVC RAZOR 代码:

@foreach (var prod in Model.allProducts)
{   
    <div class="accordion-group">
        <div class="accordion-heading">
            <a class="accordion-toggle" data-toggle="collapse" data-parent="accordion2" href="#collapse@(i)">
                <h4 class="widgettitle" id="Title">> @prod.Description_VC</h4>
            </a>
        </div>
        <div id="collapse@(i)" class="accordion-body collapse" style="height: 0px;">
            <div class="accordion-inner" style="margin-left: 10px;">
                <div style="padding-bottom: 10px;">
                    <strong>Total for product:</strong> 
                    @Html.TextBoxFor(o => o.OfferHeaders.Where(p => p.Product_ID == prod.Product_ID).FirstOrDefault().Amount_DEC)
                </div>    
            </div>
        </div>
    @{i++;}
    <div style="clear:both;"></div>
    </div>
}

但是为每个 TextBoxFor 控件生成的 HTML 具有相同的名称 Amount_DEC,因此,当我尝试将表单发回时,我的 View 模型中的所有属性都为 null 。如何确保我的 HTML 控件获得唯一的名称,以便模型绑定(bind)器可以在 POST 中使用它们?

最佳答案

如果您的方法期望模型为 IEnumerable<...>你可以使用Html.TextBox助手而不是 Html.TextBoxFor :

@Html.TextBox(string.Format("ModelName[{0}].ModelField", i), yourValueHere)

假设您的型号名称是ModelName它有属性 ModelField

关于c# - 在循环内使用 .Where().FirstOrDefault() 时,ASP MVC 中的名称不唯一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21848482/

相关文章:

c# - 查找指向 native 字节数组的不安全字节*的长度 C#

razor - 南希,第一个 Razor 页面不起作用

asp.net-mvc - ASP.NET MVC RouteValueDictionary 和复杂对象

javascript - 如何从 MVC View 中删除整个 div?

asp.net - 在 .cshtml 页面上显示所有 session 变量

c# - 如何在 03 :00 every night? 触发事件

c# - 为什么控制台上没有打印任何内容?

c# - 我们什么时候必须在 C# 中使用隐式和显式运算符?

asp.net-mvc - 使用 TFS 和 MSBuild 自动发布构建,无需调试文件和 Web.config 转换

javascript - 为什么不在 MVC 应用程序中的所有操作上使用异步?