現在、変更されたインデックスビューを使用して設定ページを作成しようとしています。目標は、ユーザーがすべての設定を表示し、1つのビュー内ですべての設定を変更し、1つのボタンを使用してすべての設定を保存できるようにすることです。設定はAjaxを使用して更新する必要があります。
私の現在のアプローチ:
意見:
<script language="javascript">
$(function() {
$('#editSettings').submit(function () {
if ($(this).valid()) {
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
success: function (result)
{
alert(result);
}
});
}
return false;
});
});
</script>
[ ... ]
@using (Ajax.BeginForm("Edit", "Settings", new AjaxOptions {UpdateTargetId = "result"}, new { @class = "form-horizontal", @id = "editSettings" } ))
{
foreach (Setting item in ViewBag.Settings)
{
@Html.Partial("_SingleSetting", item)
}
<input type="submit" value="modify" />
}
設定をロードするための部分ビュー:
<div class="control-group">
<label class="control-label">@settingName</label>
<div class="controls">
@Html.EditorFor(model => model.Value)
<span class="help-inline">@settingDescription</span>
</div>
</div>
モデル:
[Table("Settings")]
public class Setting
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int SettingId { get; set; }
public string Name { get; set; }
[Required(AllowEmptyStrings = true)]
[DisplayFormat(ConvertEmptyStringToNull = false)]
public string Value { get; set; }
}
を使用してViewBagを設定していますViewBag.Settings = _db.Settings.ToList();
jQueryはデータを次のメソッドに解析します。
[HttpPost]
public ActionResult Edit(IList<Setting> setting)
{
Console.WriteLine(setting.Count);
return Content(""); // Currently for testing purposes only. Breakpoint is set to setting.Count
}
Count
設定が。であるため、エラーをスローしますnull
。この問題を解決する方法がよくわかりません。
誰かが私にヒントを与えることができますか?
SOに関するこのトピックでは、Ajaxを使用せずにコレクションを更新する方法についてすでに説明しています。しかし、私は要点を理解できません。
ご協力ありがとうございました。