entity-framework-4 – ASP.NET MVC 3如何在Create视图上为具有I
注意:我使用的是MVC3 Razor,EF4,CF-CTP5
>如何允许视图能够在客户端上动态地为每个组织添加多个Address类,并在post上强烈绑定到模型? 这是我的模特: public class Organization { public int Id { get; set; } public string Name { get; set; } public virtual ICollection<Address> Addresses { get; set; } public virtual ICollection<PhoneNumber> PhoneNumbers { get; set; } ... } public class Address { public int Id { get; set; } public string Line1 { get; set; } public string Line2 { get; set; } public string City { get; set; } public string State { get; set; } public string PostalCode { get; set; } public string Country { get; set; } public int Type { get; set; } } 我试图弄清楚如何让组织的创建操作(/组织/创建)像这样处理创建(这样地址和电话号码是提交的模型的一部分): [HttpPost] public ActionResult Create(Organization organization) { if (ModelState.IsValid) { _db.Organizations.Add(organization); _db.SaveChanges(); return RedirectToAction("Details",organization.Id); } return View(organization); } 解决方法
你的问题很有趣:)
这只是您的要求的一种方式,我相信有比我更好的方式. 我将从你的第二个问题开始:
如果我正确理解您的请求,对我来说看起来很简单.答案就是编写视图代码来呈现Model类内容,并将无效模型返回到客户端,就像在Create操作中一样. 如果您的表单(及其字段)已使用ValidationSummary / ValidationMessage html帮助程序进行修饰,您还将看到验证消息.
您可以拥有显示组织属性的主视图,然后使用另一个显示相关地址的视图.在这里,您可以放置??一个超链接或按钮,打开一个对话框以添加新的地址对象,然后在完成后刷新地址列表.同样,您可以在列表中编辑和删除按钮作为图标. 地址列表是在客户端完全处理的一个标记,要正确绑定到服务器端,Model类应该遵循一些简单的命名规则来获取它的输入属性. 要使默认模型Binder类正确绑定您的表单,请使用组织类的以下代码段 @using (Html.BeginForm()) { @Html.HiddenFor(o => o.Id) @Html.ValidationSummary( true ) <fieldset> <legend>My Organization</legend> <div class="editor-label">@Html.LabelFor( model => model.Name )</div> <div class="editor-field"> @Html.EditorFor( model => model.Name ) @Html.ValidationMessageFor( model => model.Name ) </div> <br /> <div id="container"> <div>Address List</div> @foreach (Address a in Model.Addresses ) { Html.EditorFor(a); } </div> <div style="text-align:right;margin-top:14px;"> <input type="submit" id="btnSubmit" value="Save" /> </div> </fieldset> } 要自动绑定,表单的结果代码应如下所示 <form action="..." id="..." method="post"> <input type="hidden" name="Id" value="2"> <input type="hidden" name="Name" value="Acme Corporation"> <!-- markup for each address --> <input type="hidden" name="Addresses[0].Id" value="1"> <input type="hidden" name="Addresses[0].Line1" value="Line 1"> <input type="hidden" name="Addresses[0].Line2" value="Line 2"> ... and so on... </form> 将它的属性命名为Addresses [index] .PropertyName. 希望这可以帮助 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 模型绑定复选框问题列表
- asp页面上的失败会话到asp.net页面
- asp.net – 当我的模拟帐户被锁定时,如何防止显示用户名和密
- asp.net – App.Config和Web.Config之间的区别?
- asp.net-mvc – 将asp.net服务器参数传递给Angular 2 app
- 通过ASP.NET菜单控件禁用javascript生成
- 如何确定ASP.NET站点(IIS)上的用户数量?和他们的信息?
- asp.net – 在GridView问题中的ImageButton上的PopUpExtend
- asp.net – 如何在回发中保存asp:HiddenField值?
- asp.net-mvc-3 – 如何从MVC 3和IIS7提供汇编嵌入式资源?
- asp.net-mvc – 产品目录搜索 – NoSQL / MongoD
- asp.net-mvc – 在html.actionlink上单击转到上一
- asp.net – 为什么在“Glimpse Web Debugger”中
- asp.net-mvc-3 – MVC 3上的单元测试控制器为结果
- asp.net – 如何在网格中按日期升序?
- 如何在没有冲突的情况下在asp.net中生成随机唯一
- 悟透JavaScript
- asp.net-mvc – IdentityServer 4,OpenIdConnect
- asp.net-mvc – 如何使用ASP.NET MVC抽象标记的常
- 如何从asp.net中的javascript调用codebehind函数