asp.net-mvc-4 – 当模型中存在一对多关系时,MVC“创建视图”
发布时间:2020-12-16 00:17:18 所属栏目:asp.Net 来源:网络整理
导读:我的模型很简单,一个客户可以有很多电话号码: 我在实体框架中代表了这一点 生成的客户端类如下. public partial class Client{ public Client() { this.PhoneNumbers = new HashSetPhoneNumber(); } public int Id { get; set; } public string Name { get;
我的模型很简单,一个客户可以有很多电话号码:
我在实体框架中代表了这一点 生成的客户端类如下. public partial class Client { public Client() { this.PhoneNumbers = new HashSet<PhoneNumber>(); } public int Id { get; set; } public string Name { get; set; } public virtual ICollection<PhoneNumber> PhoneNumbers { get; set; } } 现在我需要为“创建客户端”创建一个视图页面.此页面还应有空间输入PhoneNumbers(例如:默认情况下应该有两个文本框来输入电话号码) <fieldset> <legend>Client</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> <p> <input type="submit" value="Create" /> </p> </fieldset> 作为上面的“创建视图”,我们可以轻松地为“model.Name”提供空间,因为它是一个简单的属性.但是我怎么能做类似的电话号码收集.. ?? 我知道我们可以通过丑陋的javascript代码实现这一点,但我想知道最简单易用的方法,我们可以使用ASP.NET MVC ……? 解决方法
你必须做一些事情:
首先创建一个具有所需属性的ViewModel: public class ClientViewModel { public int Id {get;set;} public string Name {get;set;} public PhoneNumber PhoneNumber1 {get;set;} public PhoneNumber PhoneNumber2 {get;set;} } 更改Create以返回ClientViewModel [HttpGet] public ActionResult Create() { return View(new ClientViewModel()); } 映射HttpPost以使用ClientViewModel并将值映射到它: [HttpPost] public ActionResult Create(ClientViewModel clientViewModel) { var client = new Client(); client.Name = clientViewModel.Name; client.PhoneNumbers.Add(clientViewModel.PhoneNumber1); client.PhoneNumbers.Add(clientViewModel.PhoneNumber2); db.Clients.Add(client); db.SaveChanges(); return RedirectToAction("Index","Client"); } 然后,最后,修改您的视图: <fieldset> <legend>Client</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.PhoneNumber1.Number) </div> <div class="editor-field"> @Html.EditorFor(model => model.PhoneNumber1.Number) @Html.ValidationMessageFor(model => model.PhoneNumber1.Number) </div> <div class="editor-label"> @Html.LabelFor(model => model.PhoneNumber2.Number) </div> <div class="editor-field"> @Html.EditorFor(model => model.PhoneNumber2.Number) @Html.ValidationMessageFor(model => model.PhoneNumber2.Number) </div> <p> <input type="submit" value="Create" /> </p> </fieldset> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – HTTPModule BeginRequest应该是Response.Redire
- asp.net-mvc – web.config在哪里用于MVC应用程序?
- .net – 加密ApplicationServices ConnectionString
- asp.net-mvc-2 – ASP.NET MVC 2多个PartialView Forms字段
- asp.net-mvc-3 – PrepareResponse().AsActionResult()抛出
- ASP.NET Core 依赖注入基本用法
- asp.net-mvc – ASP.NET MVC安全检查表
- 如何使用ASP.NET MVC项目启动Azure模拟器
- asp.net – 我们可以在单个元素上有多个itemprop用于微数据
- asp.net – 在VS 2008嵌套母版页中包含对JavaScript的相对引
推荐文章
站长推荐
- asp.net – 如何在使用无cookie的静态内容服务器
- asp.net-core – .NET Core HttpClient是否具有拦
- asp.net-mvc-3 – 从HttpContext.Current访问Tem
- asp.net-mvc-4 – 使用MVC 4 SimpleMembership与
- asp.net-mvc – MVC3,Razor,Html.TextAreaFor():
- asp.net-mvc-3 – MVC3重定向到ajax调用后的动作
- asp.net – 使用AJAX填充下拉列表
- asp.net access web.config denied
- ASP.NET MVC – 将外部模型传递给编辑器模板
- linq – ASP.NET Web API GET方法:为单个参数传
热点阅读