意見:
@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; 設定; } も記入します。
ここでいくつかのコンセプトが欠けているような気がします。何かアイデアはありますか?
ありがとう!