簡體   English   中英

MVC Partialview Hiddenfor如何添加屬性?

[英]MVC Partialview Hiddenfor how to prepend Property?

據我了解,列表的MVC模型綁定,屬性名稱必須在名稱之前,否則整個系統將無法綁定。 例如:

<input type="text" name="people[0].FirstName" value="George" />

不幸的是,我有以下情況:

public class ProjectEditModel
    {
        public int ID { get; set; }

        public List<ProjectIdea> Ideas { get; set; }

        // huge list of related objects
    }

    public class ProjectIdea
    {
        public int ID { get; set; }

        public string Name { get; set; }
    }

我正在使用一種形式來顯示ProjectEditModel,並使用PartialView來顯示ProjectIdeas,這非常復雜,因此我不想將所有內容都保留在一個剃刀視圖中。 看起來像這樣:

    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()
        @Html.HiddenFor(mbox => Model.ID)

        @Html.Partial("AddAnotherProjectIdea", Model.Ideas)

        <div class="form-group">
            <div class="col-md-offset-0 col-md-10">
                <input type="submit" value="@IndexRes.ButtonCreateNew" class="btn btn-primary" />
                @Html.ActionLink(CommonRes.ButtonToIndex, "Index", null, new { @class = "btn btn-primary" })
            </div>
        </div>
    }

和AddAnotherProjectIdea-Partialview:

@model List<Domain.Entities.ProjectIdea>

<div id="IdeaList">
    @for (int i = 0; i < Model.Count(); i++)
    {
        @Html.HiddenFor(mbox => Model[i].ID)

        <div class="form-group">
            @Html.LabelFor(m => Model[i].Name, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => Model[i].Name, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => Model[i].Name, "", new { @class = "text-danger" })
            </div>
        </div>
    }
</div>

不幸的是,這種構造導致諸如Who之類的編輯器未綁定到ProjectEditModel,因為名稱中缺少“ Ideas”名稱。 手動更改它可以:

有沒有一種簡單的方法可以將此Property-Name添加到名稱中,或者我可以欺騙綁定以接受沒有Propertyname的名稱?

您可以更改post方法以接受2個參數(視圖模型和集合),然后將集合分配給模型

[HttpPost]
public ActionResult(ProjectEditModel model, List<ProjectIdea> collection)
{
  model.Ideas = collection;
  ...

暫無
暫無

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

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