繁体   English   中英

强类型视图中的动态控件 (ASP.NET MVC)

[英]Dynamic Controls in a Strongly Typed View (ASP.NET MVC)

说我有以下内容:

public class Person{
    public int ID {get; set;}
    public string Name {get; set;}
}

public class Phone{
    public int ID {get; set;}
    public string PhoneNumber {get; set;}
}

public Class AddEditViewModel{
    public Person MyPerson{get; set;}
    public List MyPhones{get; set;}
}

我想在我的 MVC 应用程序中创建创建/编辑操作 - 该页面继承自

ViewPage<AddEditViewModel>
我希望能够为最终用户动态添加字段以添加“电话”(0-5 部电话之间的任何位置)。 我如何将该数据传递到我的 controller 中的创建/编辑方法。我尝试了以下方法,但似乎无法获得电话号码。

  [AcceptVerbs(HttpVerbs.Post)] public ActionResult Create(AddEditViewModel data){}

有了这个我可以调用 data.MyPerson.Name 并获取值但是 data.MyPhones == null

我的问题是:如何设置视图和 controller 才能提交单个添加/编辑页面,该页面根据上面的代码创建一个人 object 和多个电话对象?

如果我正确理解您的问题,您是在询问绑定到电话号码列表的问题。 Phil Haack 有一篇关于如何将model 绑定到列表的帖子

希望这可以帮助。

您可以在 MVC 视图中创建动态控件并与您的 model 绑定。例如,您可以在视图中使用列表集合 model class 或 model class 并且可以在视图中创建动态控件,它将自动与您的 8836156895 属性绑定。

如果您知道会有 5 个电话号码,那么您可以尝试这个示例,这将添加 5 个文本框,并且在提交时您将在视图中获得值 model

public class Book
{
    public string Title { get; set; }
    public string Author { get; set; }
    public DateTime DatePublished { get; set; }

}

public class BookViewModel
{
    public List<Book> Books { get; set; }

}

看法

 @model MVCLearning.Models.BookViewModel

@{
  using (Html.BeginForm("Submit", "Dynamic"))
   {

    if (Model.Count > 0 && Model != null)
    {
        for (int i = 0; i < 5; i++)
        {
            <div id="div_@i">
                @Html.TextBoxFor(m => Model.Books[i].Title)
            </div>
        }
        <input type="submit" value="Submit" />

    }

}
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM