2011-06-09 43 views
0

我有,我想用美妙的Ajax提交善良ASP.Net MVC3 - 妥善處理在服務器端的Ajax表單提交

@using(Html.BeginForm()) { 
    ... 
} 

我改變Html.BeginForm()Ajax.BeginForm()賦予,但我不是很清楚形式關於在服務器端做什麼。

以前,我用來做這樣的事情:

[HttpPost] 
public ActionResult EditMyStuff(MyViewModel vm) { 
    if(!ModelState.IsValid) 
    return View(vm); 

    // save stuff 
    return RedirectToAction("Index");   
} 

這是東西,我想保留,如果客戶端已禁用JavaScript,但如果形式是通過Ajax提交顯然這不是我想要的 - 我希望在錯誤的驗證摘要中顯示任何錯誤,或者在成功時顯示「您的更改已保存」消息。

這樣做的標準方法是什麼?

回答

2

您必須添加一個If子句Ajax請求

if (Request.IsAjaxRequest()) 
{ 
    // Return PartialView or Json 
} 
else 
{ 
    // Normal response 
} 
+0

真棒,有一個內置的方式回到我的ModelState錯誤呢? – 2011-06-09 19:19:30

+1

我通常會做的是在ViewData字典中添加錯誤消息(如果您使用的是ASP.NET MVC3,則爲ViewBag) – FelixMM 2011-06-10 18:20:21