2012-10-07 40 views
3

所以我有一個按鈕在打開模式彈出窗體的視圖。這種模式彈出窗體是部分頁面。我的問題是:MVC:用於jQuery模式彈出窗口的部分視圖,驗證問題

每當我沒有填寫窗體上的必填字段,TryUpdate檢查將顯然失敗,但它只會刷新行「window.location.reload的整個頁面cuz 「在jQuery上。我想要做的是不是刷新,而是保持原樣(模式顯示頁面),驗證摘要或驗證將顯示說明,這是必需的。這是可能的還是我與它複雜的東西?

<script type="text/javascript"> 
    $(document).ready(function() { 
     $(function() { 
      $('#modal-link').click(function() { 
       var href = this.href; 
       $('#load-modal').dialog({ 
        modal: true, 
        draggable: false, 
        position: "top", 
        open: function (event, ui) { 
         $(this).load(href, function (result) { 
          $('#new-academy-form').submit(function() { 
           $.ajax({ 
            url: this.action, 
            type: this.method, 
            data: $(this).serialize(), 
            success: function (json) { 
             window.location.reload(true); 
            }, 
            error: function (data) { 
              var errmessage = '<div class="error-repo">Error</div>'; 
              $('#messages').html(errmessage); 
             } 
           }); 
           return false; 
          }); 
         }); 
        } 
       }); 
       return false; 
      }); 
     }); 
    }); 
</script> 

這是按鈕:

<div class="width3"> 
       <%: Html.ActionLink("Submit New", "Create", "Propose", null, new { @class = "results", id = "modal-link" })%> 
      </div> 

這是操作:

public ActionResult Create() 
     { 
      return PartialView(Propose.LoadDetails(context, null)); 
     } 

     [HttpPost] 
     public ActionResult Create(FormCollection formCollection) 
     { 
      Propose propose= new Propose(); 
      if(TryUpdateModel(propose, "Propose ")){ 
       context.Propoe.Add(propose); 
       context.SaveChanges(); 
       var proposals = new System.Text.StringBuilder(); 
       return Json(new { propose= proposals}); 
      } 
      return PartialView(Propose.LoadDetails(context, null)); 
     } 
+0

你可以從你的行動,讓你決定你是否應該* *重新加載整個頁面或不返回一個狀態碼。如果存在實際錯誤,則只會觸發jQuery AJAX錯誤回調。或者,您可以返回指示錯誤的HTTP狀態代碼,如下所示:http://stackoverflow.com/q/4707755/453277 –

+0

因此您真的不能使用通常的助手了嗎?在該部分頁面上? – gdubs

回答

1

你可以從你的行動返回一個標誌。

var data = new {isSuccess, new { propose= proposals}}; 
return Json(data , JsonRequestBehavior.AllowGet); 

,然後用它在jQuery的像

success: function (data) { 
if(data.isSuccess){ 
    window.location.reload(true); 
} 
else{ 
    // write code to show validation summary and no reload. 
} 
}