2010-12-30 24 views
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); 
      }); 
     ); 
}); 

答えて

1

を提出します。また、あなたは決算}が欠けているように見える:

$(document).ready(function() { 
    $('#testForm').submit(function() { 
     $.post($(this).attr("action"), $(this).serialize(), function (result) { 
      $('#mydiv').html(result); 
     }); 
     return false; 
    }); 
}); 

何実際にサーバに送信されることはOther.OtherName=fooであるため、また、あなたがこのようなあなたのコントローラのアクションを変更する必要があります:

返信用
[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Test([Bind(Prefix="Other")]Other other) 
+0

おかげで、私はこれらの変更を加えましたが、モデルはまだアクションとしてnullに戻っています。 – user415394

+0

@ user415394、AJAXリクエストでFireBugで実際に送信された内容を確認できますか?また、適切なプレフィックスの使用について私のアップデートをチェックアウトしてください。 –

関連する問題