私には理解できない初心者の問題があります.asp.netコントローラーからの部分ビューから生成されたフォームがあり、jqueryダイアログに表示されます.
ダイアログに2つのボタンがあります(保存/キャンセル)
保存ボタンで、フォームからの入力をシリアル化してAsp.net mvc actionControllerに送り返したいのですが、うまくいかないようです.actioncontrollerはJqueryダイアログからモデルオブジェクトを取得していません.フォームの Jquery Serialize 関数。
スクリプトコードは次のとおりです。
<button id="btnDialog">Account Logon</button>
<div id="Logonform"></div>
<script type="text/javascript">
$(document).ready(function () {
$.validator.unobtrusive.parse("#Logonform");
$("#Logonform").dialog({
autoOpen: false,
modal: true,
title: 'Login',
buttons: {
Save: function () {
alert($("#Logonform").serializeArray());
alert($("#Logonform").attr('UserName'));
$.ajax({
url: "@Url.Action("LogOn", "Account")",
type: "POST",
data: $("#Logonform").serialize(),
datatype: "JSON",
success: function (result) {
$("#Logonform").html(result).dialog('open');
}
});
},
Close: function () {
$(this).dialog('close');
}
}
});
$("#btnDialog").click(function () {
$.ajax({
url: "@Url.Action("LogOn", "Account")",
type: "GET",
success: function (result) {
$("#Logonform").html(result).dialog('open');
}
});
});
})
</script>
コントローラー:
public ActionResult LogOn()
{
if (Request.IsAjaxRequest())
{
return PartialView("_Logon");
}
return View();
}
[HttpPost]
public ActionResult LogOn(LogOnModel model)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(model.UserName, model.Password))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
return Json( new { result = "ok", user = model.UserName });
}
else
{
return PartialView("_Logon");
}
}
景色:
@model JqueryDialogTest.Models.LogOnModel
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Models/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@Html.ValidationSummary(true, "Échec de la connexion. Corrigez les erreurs et réessayez.")
@using (Html.BeginForm()) {
<div>
<fieldset>
<div class="editor-label">
@Html.LabelFor(m => m.UserName)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.UserName)
@Html.ValidationMessageFor(m => m.UserName)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.Password)
</div>
<div class="editor-field">
@Html.PasswordFor(m => m.Password)
@Html.ValidationMessageFor(m => m.Password)
</div>
<div class="editor-label">
@Html.CheckBoxFor(m => m.RememberMe)
@Html.LabelFor(m => m.RememberMe)
</div>
</fieldset>
</div>
}
何が間違っているかを指摘するあなたからのコメントは非常にありがたいです
乾杯