2016-12-27 16 views
-1

請幫助,有沒有辦法在void方法內組織服務器端文本字段字段驗證?MVC服務器端字段驗證無效方法中的模型

主要無效的方法:以下部分代碼

// Add new row into SQL DB 
public void AddNewRow(MyClass obj) 
{ 
    bool fieldsValid = CheckFields(obj); 

    if (fieldsValid) 
    { ... // It's Ok, save new row 
} 

// Check fields values method 
public bool CheckOTKFields(MyClass obj) 
{ 
    bool result = true; 

    if (obj.ObjectProperty % 2 == 0 || !(obj.ObjectProperty is int)) 
    { 
     @ViewBag.Otl1_DividingError = "Error description"; 
     result = false; // Flag to false 
    } 
    ... // Other properties 
    return (result); 
} 

我試過@ViewBag變量,但也有很多困難,當頁面加載\耳目一新。可能你知道更好的方法嗎?或者我只能使用客戶端(js \ jQ)驗證?

+0

你有什麼「困難」?您的代碼以何種方式無法按預期工作? – David

+0

@David,在視圖和控制器代碼中,'NULL'異常和ViewBag變量聲明讓我有點困惑...... – SPNick

+0

「我有點困惑」並不是我們可以解決的特定問題。如果您收到實際錯誤,那麼閱讀錯誤消息並查看引發錯誤的代碼將是一個好的開始。 – David

回答

1

只要你返回從POST操作的響應,你可以設置:

ModelState.AddModelError("", "Error Description"); 

的第一個參數是指模型的特定屬性,但空字符串工作。 POST的響應將顯示在驗證摘要結果中。

難點在於它無法撤銷您之前採取的任何行動;您必須確保首先對所有項目進行驗證,然後一旦安全繼續執行任何您想要執行的操作。