我有两个实体: 1)学生 和2)地址。如何为两个相关实体创建视图和视图模型
public class Student
{
Public Int StudentId { get; set; }
Public String FullName { get; set; }
Public virtual IList<Address> Addresses { get; set; }
}
public class Address
{
Public Int AddressId { get; set; }
Public Int StudentId { get; set; }
Public String FullAddress { get; set; }
Public virtual Student Student { get; set; }
}
每个学生可能有零个或多个地址。
我想为这两个实体创建单个视图。我知道必须创建一个视图模型。这是视图模型。
public class StudentViewModel
{
Public Int StudentId { get; set; }
Public String FullName { get; set; }
public Address AddAddressModel { get; set; }
Public virtual IList<Address> Addresses { get; set; }
}
我创建了一个StudentViewModel视图。这是StudentViewModel:
@model MyProject.Models.StudentViewModel
@{
ViewBag.Title = "Create";
}
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<div class="editor-label">
@Html.LabelFor(model => model.FullName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.FullName)
@Html.ValidationMessageFor(model => model.FullName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.AddAddressModel.FullAddress)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.AddAddressModel.FullAddres)
@Html.ValidationMessageFor(model => model.AddAddressModel.FullAddres)
</div>
<button id="add">add address to list</button>
<input type="submit" value="save in database" />
</fieldset>
请告诉我,我怎么能对一个在StudentViewModel的地址属性添加一个或多个地址,这种操作对用户后显示。最后当我点击“保存数据库”按钮的学生和他的地址必须插入数据库。
谢谢CornéM创建模板,但我想用我的模型。因为我想把这个模型扩展到这样的复杂模型:工厂和他的分支。请告诉我更多关于第一个解决方案:在表单提交之前将表单序列化为JSON对象 – 2013-02-22 13:15:25
嗨,您可以使用此插件将表单序列化为复杂的JSON对象:http://stackoverflow.com/a/8407771/1746803。然后,您可以简单地使用'$ .post()'将对象发送到您的脚本。我已经多次使用这个解决方案和复杂的模型,它还没有让我失望。 – Knelis 2013-02-22 15:04:45