簡體   English   中英

ASP.NET MVC4-ICollection循環內的表單元素

[英]ASP.NET mvc4 - form elements inside ICollection loop

我想做一個編輯功能,您可以在其中添加元字段(=類別的特定字段)。

我想在視圖中做的是

foreach (App.Models.Metafield field in Model.Category.Metafields)
{
   <div class="field">
        @Html.TextBoxFor(model => field.Name, new { @class = "form-control title" })
        @Html.DropDownListFor(model => field.Type, Model.MetaTypes, new { @class = "form-control type" })
   </div>
}

問題是,當我按下保存按鈕時,沒有將Metafields添加到viewModel中。 所以我猜應該將field.Namefield.Type替換為其他內容。

這無法通過這種方式工作,因為發送的表單不能包含這些具有相同名稱的動態生成的字段。

但是,您可以使用js從這些動態字段中收集數據,並在提交表單之前將其序列化為隱藏字段,然后可以在服務器端對其進行解析。 這是jquery的示例:

$('#save-btn').click(function(e) {
    $hidden = $("#hidden");
    $hidden.val(getDynamicData());
});

function getDyanmicData() {
    var data;
    $fields = $(".field");
    // get children and calculate data

    return data;
}

這可能有點“手動工作”,但是我發現了解正在發生的事情很有用。 對於其他解決方案,您可以在ASP.NET MVC中搜索表單動態表單。

請嘗試此代碼

@for(int i=0;i<=Model.Category.Metafields.count();i++)
{
   <div class="field">
        @Html.TextBoxFor(m=> m[i].Name, new { @class = "form-control title" })
        @Html.DropDownListFor(m=> m[i].Type, Model.MetaTypes, new { @class = "form-control type" })
   </div>
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM