2009-12-19 136 views
2

我有一個int錯誤驗證問題。ASP.Net MVC錯誤驗證

我已經驗證了客戶名稱:

if (String.IsNullOrEmpty(CustomerName)) 
      yield return new RuleViolation("Customer Name Required", "CustomerName"); 
現在如果我想添加驗證一個城市,在這種情況下,我有被保存爲int類型一CityID

,所以我不能寫我的if語句以同樣的方式...因爲沒有int.IsNullOrEmpty方法。假設用戶沒有選擇城市的下拉菜單 - 基本上沒有價值的節省。

什麼是最好的方式來編寫我的int驗證語句?

更新:這是什麼,我有我的,我認爲形式的樣本:

<% using (Html.BeginForm()) 
    {%> 

    <fieldset> 
     <legend>Add a new customer</legend> 
     <p> 
      <label for="CustomerName">Customer Name:</label> 
      <%= Html.TextBox("CustomerName")%> 
      <%= Html.ValidationMessage("CustomerName", "*")%> 
     &nbsp;&nbsp; 
      <label for="CityID">City:</label> 
      <%= Html.DropDownList("CityID", Model.Cities as SelectList, "Select City")%> 
      <%= Html.ValidationMessage("CityID", "*")%> 
     &nbsp;&nbsp; 
      <input type="submit" value="Create New Customer" /> 
     </p> 
    </fieldset> 

<% } %> 

和我的視圖模型是這樣的:

public class CustomerFormViewModel 
{ 
    //Properties 
    public Customer Customer { get; set; } 
    public SelectList Cities { get; set; } 

    //Constructor 
    public CustomerFormViewModel(Customer customer) 
    { 
     CustomerRepository customerRepository = new CustomerRepository(); 
     Customer = customer; 
     Cities = new SelectList(customerRepository.FindAllCities(), "CityID", "CityName"); 
    } 
} 

回答

1

使用可空整型,

int? i = null; 
0

您可以在路由配置中設置默認值。如果您將默認值設置爲您知道的值無效,那麼您可以檢查該值。如果您的城市編號爲1到X,則將默認值設置爲-1並檢查。

0

如果以字符串格式獲得輸入,則嘗試使用正則表達式來驗證整數格式。

Regex rxNums = new Regex(@"^\d+$"); // Any positive decimal 
if (!rxNums.IsMatch(cityId)) 
{ 
    yield return new RuleViolation("city id Required", "cityId"); 
} 

如果您以整數格式獲取值,那麼您只需檢查該值是否大於0。

1

一週前我有這個相同的確切要求。你可以用兩種方法來解決這個問題。

1)在下拉菜單中,您將始終有「請選擇」,默認值爲-1。當提交表單並且沒有選擇城市時,則對於CityID,MVC模型將綁定-1(默認值)。因此,您可以隨時檢查CityID> 0 else「raise error」

2)使用c#3.0功能CityID爲空的Int(int?),這意味着您的CityID也可以爲null。如果沒有爲CityID傳遞值,則您的cityID將始終爲空。

+0

我很感謝您的幫助,雖然我不太瞭解如何給「請選擇」它的默認值爲-1。我可以讓它說「請選擇」,但我不知道在哪裏指定它的價值。我用我視圖中的代碼更新了我的問題,以顯示我目前擁有的代碼。 – Ben 2009-12-22 02:20:29

+0

當您創建下拉菜單時,它將具有文本和值。我始終將「值」指定爲-1,將文本指定爲「請選擇」。提交表單時,發佈的值將在您的示例中包含「-1」作爲CityID。 – 2009-12-22 16:14:24