如何访问模型属性以在IEnumerable Type中创建texboxfor?

时间:2018-07-23 03:42:53

标签: asp.net-mvc

我想在@model List<Proj.xx.MyClass>中使用HTML帮助器创建强类型文本框。但是我无法访问MyClass的属性。

任何人都可以帮助我解决问题吗?

  public class MyClass
{

        public string Name { get; set; }

        public string AddNote { get; set; }
}

查看

 @model List<Proj.xx.MyClass>
         @foreach (var item in Model)
         {
          <tr>
            <td>
                <a data-toggle="modal" data-target="#AddNote">

                    @Html.DisplayFor(modelItem => item.Name)
              </a>

            </td>                                                                

        </tr>
        }


 <div class="modal fade" id="AddNote" role="dialog">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <div class="modal-body">                                       
                        @Html.TextBoxFor(m=>m.AddNote)                             

                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" id="reset" data-dismiss="modal">Close</button>
                    <button type="submit" id="submit">Submit</button>              
                </div>
            </div>
        </div>
    </div>

1 个答案:

答案 0 :(得分:3)

您可以创建一个componentDidUpdate方法,该方法基于ChildActionOnly的实例返回模态的部分视图

MyClass

[ChildOnlyAction] public PartialViewResult _Note() { MyClass model = new MyClass(); .... // set any defaults if required return PartialView("_Note", model)); } 部分

_Note.cshtml

然后在主视图中,使用

@model MyClass
<div class="modal fade" id="AddNote" role="dialog">
    ....
    <div class="modal-body">
        @Html.HiddenFor(m => m.Name)                             
        @Html.TextBoxFor(m => m.AddNote)                             
    </div>
    ....
</div>

@Html.Action("_Note") // assumes its in the same controller

请注意,我为@{ Html.RenderAction("_Note"); } 属性包括了一个隐藏的输入,假设您也希望也回发该值,以使您知道该注释与哪个Name相关联(尽管您确实应该也有一个ID属性)。另外,您的html还应该包含一个MyClass元素以提交修改后的值。

然后,假设您正在编辑现有记录,则还需要一些JavaScript才能将当前值分配给输入。