在剃刀编辑视图中显示一对多关系

时间:2014-07-01 11:03:22

标签: c# asp.net-mvc-4 razor

我有一个名为Person的实体,它有一个颜色列表。颜色有名称和活动字段。当我编辑一个人时,我希望能够编辑附加到他们的颜色。我在剃须刀视图中无法做到这一点 - 因为我遇到了错误。

@model InterviewTest.Domain.Entities.Person

@{
    ViewBag.Title = "Edit";
}

<h2>Edit</h2>

@using (Html.BeginForm())
{
@Html.AntiForgeryToken()

<div class="form-horizontal">
    <h4>Person</h4>
    <hr />
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    @Html.HiddenFor(model => model.PersonId)




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



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

我试图尝试这样做 - 但没有工作。

    <h2>Favourite Colours</h2>
    @foreach(var item in Model.Colours)
    { 
    <div class="form-group">
        @Html.LabelFor(item.Name, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            <div class="checkbox">
                @Html.EditorFor(item.IsEnabled)
                @Html.ValidationMessageFor(model => model.IsEnabled, "", new { @class = "text-danger" })
            </div>
        </div>
    </div>

    }
    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Save" class="btn btn-default" />
        </div>
    </div>
</div>

}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

3 个答案:

答案 0 :(得分:0)

语法错误。它在以下div中不完整

<div class="checkbox">
 @Html.EditorFor**(item.)**
 @Html.ValidationMessageFor(model => model.IsEnabled, "", new { @class = "text-danger" })
</div>

而是使用 item.Name

答案 1 :(得分:0)

请确保Color类中的属性是否全部公开以及isEnabled属性是否存在。

查看您的代码,似乎IsAuthorised和IsEnabled属性可用于模型,即Person实体。

但是在Model.Colours的forearch项目中,你试图将IsEnabled用于一个项目,在这种情况下它是Color实体。

答案 2 :(得分:0)

您是否缺少LabelFor和EditorFor中的lambda表达式?你在其他地方使用它。 @Html.EditorFor(model => model.IsAuthorised)