2011-05-06 7 views
4

フォームを含むページ上にポッドがあります。フォームを含むASP.NET MVC3 Html.Action

私は、次のような方法でこのポッドを使用しています

@Html.Action("Pod","Home") 

フォームポストを扱うポッドのHttpPostアクションでチェックいくつかのビジネス・ルールがあります。このビジネスルールが失敗すると、モデル状態にエラーが追加されます。

問題は、ビジネスルールが検証に失敗したときです。私は空白のページのポッドだけを表示するポッドアクションからビューを返します。

このようなフォームを正しく再利用しても、このビジネスルールのサーバー側での検証が有効なのはなぜですか(検証にはDBヒットが必要です)。

$(function() { 
    $('#podForm').submit(function() { 
     $.ajax({ 
      url: this.action, 
      type: this.method, 
      data: $(this).serialize(), 
      success: function(result) { 
       $('#pod').html(result); 
      } 
     }); 
    }); 
}); 

最後のものにするために:

<div id="pod"> 
    @Html.Action("Pod","Home") 
</div> 

Pod.cshtml内側:

@using (Html.BeginForm("Pod", "Home", FormMethod.Post, new { id = "podForm" })) 
{ 
    ... 
} 

は最終的にそれをAJAXify

+0

我々はMVC3にすでにありますか?私はどこにいたのですか?ああ。待機して、従来のASPクラシックサイトで作業します。 –

答えて

6

一つの可能​​性は、Pod部分でフォームをAJAXifyすることですPOSTアクションがPod.cshtmlをpartiとして返すことは間違いありませんすべてのビュー。二つの可能性:

[HttpPost] 
public ActionResult Pod(PodViewModel model) 
{ 
    if (!ModelState.IsValid) 
    { 
     return PartialView(model); 
    } 
    ... 
} 

または部分的Pod.cshtml中:

@{ 
    Layout = null; 
} 
+0

いいですが、 "return false;"を追加する必要があります。あなたのjavascriptコードにajax呼び出しの後に。 –