asp.net-mvc-4 – 当模型中存在一对多关系时,MVC“创建视图”
发布时间:2020-05-23 20:08:30 所属栏目:asp.Net 来源:互联网
导读:我的模型很简单,一个客户可以有很多电话号码: 我在实体框架中代表了这一点 生成的客户端类如下. public partial class Client{ public Client() { this.PhoneNumbers = new HashSetPhoneNumber(); } public int Id { get; set; }
|
我的模型很简单,一个客户可以有很多电话号码: 我在实体框架中代表了这一点 生成的客户端类如下. 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中Session缓存与Cache缓存的区别分析
- asp.net-mvc-4 – DataAnnotation的必需属性
- asp.net中的SqlDependency
- asp.net-mvc – 在FSharp.Core旁边找不到FSharp.Core.sigda
- asp.net – 在网站上放置广告的最佳做法?
- asp.net-mvc – 什么是ASP.Net MVC?
- asp.net-mvc – 从MVC5框架OAuth/OWin身份提供程序与外部au
- iis-6 – 如何防止IIS覆盖我在ASP.NET中设置的文化?
- 如何在asp.net c#中计算网站访问者数量
- 在ASP.NET MVC中获取原始请求
推荐文章
站长推荐
热点阅读
