asp.net-mvc-3 – ASP.NET MVC 3一对多表格
发布时间:2020-12-16 03:25:19 所属栏目:asp.Net 来源:网络整理
导读:我有使用Entity Framework Code First映射的这些类: public class Person{ public int PersonId { get; set; } public string Name { get; set; } //... additional properties [Required] public virtual ICollectionAddress Addresses { get; set; }}publ
我有使用Entity Framework Code First映射的这些类:
public class Person { public int PersonId { get; set; } public string Name { get; set; } //... additional properties [Required] public virtual ICollection<Address> Addresses { get; set; } } public class Address { public int AddressId { get; set; } public string Street { get; set; } //... additional properties public int PersonId { get; set; } public virtual Person Person { get; set; } } 因此,使用ASP.NET MVC 3,如何在一个表单中执行人员编辑视图以填充地址中的所有人员属性? @using (Html.BeginForm()) { @Html.ValidationSummary(true) <fieldset> <legend>Person</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> <div class="editor-label"> @Html.LabelFor(model => model.Adresses.FirstOrDefault().Street) </div> <div class="editor-field"> @Html.EditorFor(model => model.Adresses.FirstOrDefault().Street) @Html.ValidationMessageFor(model => model.Adresses.FirstOrDefault().Street) </div> <p> <input type="submit" value="Create" /> </p> </fieldset> } 这可以很好地显示来自数据库的Street输入,但是当我进行提交时,Street不会改变. [HttpPost] public ActionResult Edit(int id,FormCollection formCollection) { Person person = unityOfWork.PersonRepository.GetById(id); UpdateModel<Person>(person); if (ModelState.IsValid) { unityOfWork.PersonRepository.Update(person); unityOfWork.SaveChanges(); return RedirectToAction("Index"); } return View(person); } 解决方法
由于模型绑定器必须修复集合的方式,因为相关的ID不存在,所以会很困难.
最好为此屏幕创建一个ViewModel,并在它与底层域模型之间进行转换. 如果你提供编辑所有地址的工具,我会使用Steve Sanderson’s BeginCollectionItem helper.但由于你只编辑一个地址,一个带有Person属性和一个单独的Address属性的新ViewModel类会更容易,或者使用一个类包括与此视图相关的Person和Address中的属性. 我是分离关注的重要支持者.您的应用程序中有三个模型;描述数据库中数据存储实现的实体模型,描述UI中数据表示实现的View模型和域模型,它是应用程序中数据的逻辑表示.正如你在这里所做的那样,为每个目的使用相同的模型很诱人.但是,只要您的要求变得非常重要,它就会成为负担,因此您最好创建在您需要的地方最有效的类. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- AspNetCore.Authentication.JwtBearer失败,没有SecurityTok
- asp.net-mvc – Azure托管的ASP.NET MVC网站删除与客户端缓
- c#中分布方法和分部类
- VS2017搭建ASP.Net Core和Angular5项目
- 如何在调用WCF服务之前弹出一个确认对话框?
- asp.net – 在Windows 2008 R2 SP1上,asmx的JQuery失败
- asp.net-web-api – 如何设置katana-project以允许json格式
- asp.net-mvc – 当前上下文中不存在’HttpClientFactory’
- asp.net-mvc-4 – MVC4最小参考
- asp.net – 如何使用JSON方法序列化javascript对象
推荐文章
站长推荐
- 将mvc 5应用程序连接到Azure中的ACS?
- asp.net-mvc – 将Castle Windsor与SignalR集成
- I am a passionate coder ^_^
- asp.net – Request.IsAuthenticated总是如此.我
- asp.net-mvc – 单元测试ASP.Net MVC Action结果
- asp.net – 当页面在iFrame中时,会话变量不会保存
- asp.net-mvc-4 – 在umbraco中获取错误无法找到类
- asp.net-mvc – Asp.net MVC NoSQL数据库
- asp.net – 如何跨服务器场实现锁定?
- asp.net-mvc – 如何使用MVC中的rout删除url中的
热点阅读