2013-07-24 49 views
1

我對下面的代碼有問題,對我來說最簡單的方法是顯示彈出消息 並保留原樣,但不知何故無法弄清楚如何直接從控制器顯示信息消息而不返回視圖。我知道這是不好的做法,但在我的情況下是最容易做的事情。 當前代碼驗證該字段並使其失敗(良好),但會給出默認的通用消息。我想更改該信息或顯示其他信息彈出窗口。如何更改來自MVC3控制器的默認驗證消息?

public ActionResult IsValidName(string param1) 
     { 
     //some code... 
      var result = (count == 0); 
      if (!result) 
     //Popup Message(Record Exists!) and proceed 

      return Json(result, JsonRequestBehavior.AllowGet); 
} 

我曾嘗試:

if (!result) 
     return Json(new JsonResult { "Record already exists",JsonRequestBehavior.AllowGet); 

,但不知道如何攔截我的驗證新的Json回報的JavaScript 其中默認的消息從何而來。

回答

0

真的沒有足夠的信息提供,但我會概述正確的方法來做到這一點。

如果你有需要時調出你的應用程序來驗證一個特定的領域,那麼你可以方便地標記在模型中的字段屬性這樣的形式:

型號

[Remote("ActionName", "Controller", ErrorMessage = "The name is not available")] 
public string CompanyName { get; set; } 

控制器

public ActionResult IsValidName(string param1) 
{ 
     //some code... 
      var result = (count == 0); 
      if (!result) 
     //Popup Message(Record Exists!) and proceed 

     return Json(result, JsonRequestBehavior.AllowGet); 
} 

查看

@Html.TextBoxFor(x=> x.CompanyName) 
@Html.ValidationMessageFor(x=> x.CompanyName) 

這是建立在框架的方式來做到這一點。它會在頁面上顯示錯誤信息。如果你真的想做一個警告框,你可以編寫你自己的jQuery函數來檢查字段上的關鍵字,調用這個控制器動作來驗證,然後根據結果顯示你的警報。真的建議不要那樣做。

+0

謝謝尼克,我很想去那條路線,但問題是我特殊的觀點是用JavaScript創建的,加上一些telerik控件,我真的不知道我可以把[REMOTE]屬性放在哪裏... –

0

好吧,我去了Ajax路線,並在JavaScript回調函數中添加到行動結果 ,並正常工作。