看法:
@model My.Data.Section
@using (Html.BeginForm("Save", "Sections"))
{
@Html.Partial("_Fields", Model.Fields);
<input type="submit" value="Save">
}
查看JS:
@Scripts.Render("~/bundles/jqueryval")
<script type="text/javascript">
$(function () {
$('form').submit(function () {
if ($(this).valid()) {
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
success: function (result) {
// do some stuff with the returned partial
}
});
}
return false;
});
});
</script>
模型:
来自我的数据层(EF5/DBContext/unitofwork)
namespace My.Data
{
using System;
using System.Collections.Generic;
public partial class Section
{
public Section()
{
this.Fields = new HashSet<Field>();
}
public int SectionID { get; set; }
public int FormID { get; set; }
public string Name { get; set; }
public Nullable<int> PrevSection { get; set; }
public Nullable<int> NextSection { get; set; }
public int SortOrder { get; set; }
public virtual ICollection<Field> Fields { get; set; }
public virtual Form Form { get; set; }
}
}
控制器:
[HttpPost]
public ActionResult Save(Section model, FormCollection fc)
{
// do some fun stuff
return PartialView("_Section", model);
}
当我调试控制器时,模型对象没有反序列化,我认为这是因为我没有使用 labelfor & textboxfor ect ?
当我检查 FormCollection 对象时,它具有我需要的所有键和所有值,但是,我想从我的字段中获取一些其他值,例如 data-fieldid-itemid="1",我将如何完成这个? 最好的方法是什么?
我需要使用 LabelFor/TextboxFor 吗?
我想我期待的是模型对象通过填充数据,以及我的模型对象的子项,特别是 public virtual ICollection Fields { get; 放; } 也要填写。
我觉得我在这里遗漏了一些概念,有什么想法吗?
谢谢!