1
私はそこにテキストボックスを持つ部分的なビューを持っているビューを持っています。メインビューにはタイプpersonのモデルがあり、パーシャルビューにはperson.otherモデルのモデルがあります。私は、他のモデルが空であるajaxポストバックを行うとき、私はそれがテキストボックスデータを受け取ることを期待しました。これはコードです。MVC Partial Viewがajaxポストバックでモデルを返さない
クラス
public class Person
{
public string PersonID { get; set; }
public string Name { get; set; }
public Other Other { get; set; }
}
public class Other
{
public string OtherName { get; set; }
}
コントローラ
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index()
{
Person person = new Person();
person.Other = new Other();
person.Other.OtherName = "avbc";
return View(person);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Test(Other other)
{
if (Request.IsAjaxRequest())
{
return PartialView("Test");
}
return null;
}
ビュー
@model PartialViewTest.Models.Person
<h2>Index</h2>
<div id="mydiv">
@Html.Partial("Test", Model.Other)
</div>
PartialView
@model PartialViewTest.Models.Other
<h1>Test</h1>
@using (Html.BeginForm("Test", "Home", FormMethod.Post, new { id = "testForm" })) {
@Html.TextBoxFor(m => m.OtherName)
<input type="submit"/>
}
jqueryのは、あなたが提出したコールバックからfalseを返すことによって、デフォルトのフォームの送信をキャンセルしていることを確認してください
$(document).ready(function() {
$('#testForm').submit(function() {
$.post($(this).attr("action"),
$(this).serialize(),
function (result) {
$('#mydiv').html(result);
});
);
});
おかげで、私はこれらの変更を加えましたが、モデルはまだアクションとしてnullに戻っています。 – user415394
@ user415394、AJAXリクエストでFireBugで実際に送信された内容を確認できますか?また、適切なプレフィックスの使用について私のアップデートをチェックアウトしてください。 –