【发布时间】:2015-01-17 09:39:10
【问题描述】:
我有一个带有子模型的模型。
[Table("Personnel")]
public class Personnel
{
[Key]
public int Id { get; set; }
[MaxLength(10)]
public string Code { get; set; }
[MaxLength(20)]
public string Name { get; set; }
public virtual List<PersonnelDegree> Degrees
{
get;
set;
}
}
public class PersonnelDegree
{
[Key]
public int Id { get; set; }
[ForeignKey("Personnel")]
public int PersonnelId { get; set; }
public virtual Personnel Personnel { get; set; }
[UIHint("Enum")]
public Degree Degree { get; set; }
public string Major { get; set; }
public string SubField { get; set; }
public string Location { get; set; }
}
我想为此创建一个视图。(添加)
我添加了要查看的人员字段,但是如何为 PersonnelDegree 添加项目?
@using (Html.BeginForm("Add", "Personnel", FormMethod.Post, new {enctype = "multipart/form-data", @class = "form-horizontal tasi-form", id = "default"}))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, null, new {@class = "alert alert-danger "})
<div class="form-group">
@Html.LabelFor(m => m.Code, new {@class = "control-label col-lg-1"})
<div class="col-lg-3">
@Html.TextBoxFor(m => m.Code, null, new {@class = "form-control", maxlength = 10})
@Html.ValidationMessageFor(m => m.Code)
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.Name, new {@class = "control-label col-lg-1"})
<div class="col-lg-3">
@Html.TextBoxFor(m => m.Name, new {@class = "form-control", maxlength = 20})
@Html.ValidationMessageFor(m => m.Name)
</div>
@Html.LabelFor(m => m.Family, new {@class = "control-label col-lg-1"})
<div class="col-lg-3">
@Html.TextBoxFor(m => m.Family, null, new {@class = "form-control", maxlength = 30})
@Html.ValidationMessageFor(m => m.Family)
</div>
</div>
我可以在这个视图中添加多个 PersonnelDegrees 吗?
编辑
我在 Degrees 视图中添加了一个 div
<div id="Degrees">
<div id="NewDegree" style="display:none">
<div class="form-group">
<input class="form-control" id="Degrees[#].Major" name="Degrees[#].Major" value="" type="text">
// another items
</div>
</div>
</div>
在 javascript 中:
$(document).ready(function() {
$(function() {
$("#addItem").click(function () {
var index = $('#Degrees tbody tr').length; // assumes rows wont be deleted
var clone = $('#NewDegree').html();
// Update the index of the clone
clone.replace(/\[#\]/g, '[' + index + ']');
clone.replace(/"%"/g, '"' + index + '"');
$('#Degrees').append(clone);
});
);
});
它添加了一个div,但几秒钟后隐藏div并刷新页面。
【问题讨论】:
-
非常感谢,如何发送给控制器?
-
如果你的模型是
Personnel并且你的post方法是public ActionResult Create(Personnel model)那么模型将被正确绑定 -
关键是绑定一个集合是为了确保你的控件被正确命名和索引以进行绑定,所以你需要诸如
<input name="Degrees[0].ID ..>, <input name="Degrees[1].ID ..>之类的控件。 -
谢谢,我添加了一个带有 display:none 的 div 并添加了所有项目 (Degrees[#].Name) ,但是当我在 Degrees div (append) 中添加这个 div 时,再次加载页面添加删除新div.
标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 model-view-controller