2011-05-06 54 views
4

我的頁面上有一個包含窗體的窗格。包含表單的ASP.NET MVC3 Html.Action

我也以同樣的方式使用該吊艙如下:

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

有一些業務規則在處理表單後波德的HttpPost行動檢查。如果此業務規則失敗,則向模型狀態添加錯誤。

問題是,當業務規則無法驗證。我從pod操作返回一個視圖,該視圖僅顯示空白頁上的窗格。

我該如何正確重用這樣的表單,並且仍然有這個業務規則的服務器端驗證(需要db命中來驗證)?

+0

我們已經到MVC3?我到底在哪裏?哦。等待,在傳統的ASP經典網站上工作。 – 2011-05-06 12:58:17

回答

6

一種可能性是AJAXify在Pod部分形式:

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

和內部Pod.cshtml

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

終於AJAXify它:

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

的最後一件事,使肯定的是POST操作返回Pod.cshtml作爲parti一目瞭然。兩種可能性:

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

Pod.cshtml部分:

@{ 
    Layout = null; 
} 
+0

不錯,但您需要添加「返回false」;在ajax調用之後發送到您的javascript代碼。 – 2012-11-23 07:56:05