【问题标题】:Data binding with asp-for inside nested loop在嵌套循环中使用 asp-for 进行数据绑定
【发布时间】:2021-05-25 20:39:32
【问题描述】:

我的网站上有几个块包含输入列表

<div id="MainClaimsBlock">
    @await Html.PartialAsync("UserClaimsBlock", Model.FirstClaimModel)
    @await Html.PartialAsync("UserClaimsBlock", Model.SecondClaimModel)
    @await Html.PartialAsync("UserClaimsBlock", Model.ThirdClaimModel)
    @await Html.PartialAsync("UserClaimsBlock", Model.FourthClaimModel)
</div>

在每个局部视图中,我都有类似的东西(原始 100 多行)

for (var i = 0; i < Model.Length; i++)
    {
        <div class="custom-control custom-switch">
            <input type="checkbox" asp-for="@Model.Categories[i].Selected">
            <label asp-for="@Model.Categories[i].Selected">@Model.Categories[i].Name</label>
        </div>
    }

问题是我无法从这些局部视图中保存值,因为 asp-for 为局部视图中的列表提供了重复的 id 和属性。

id="Model_SubCategories_6__Selected"

如何区分一个局部视图的 Id 与另一个?

【问题讨论】:

    标签: c# asp.net .net razor


    【解决方案1】:

    哇,从questionChris Pratt 很快就找到了解决方案

    解决方法是在调用局部视图之前使用ViewDataDictionary

    @{
        var myViewData = new ViewDataDictionary(ViewData);
        myViewData.TemplateInfo.HtmlFieldPrefix = "Claims";
    }
    
    @await Html.PartialAsync("UserClaimsBlock", Model.SecondClaimModel, myViewData)
    

    然后 asp-for 标签根据这个前缀返回 id

    id="Claims_Categories_2__Selected"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-17
      • 2021-12-11
      • 2018-11-28
      • 1970-01-01
      • 2019-07-26
      • 2015-01-28
      • 2021-02-15
      • 2021-12-08
      相关资源
      最近更新 更多