2015-03-02 61 views
0

我有我的看法如下textboxforMVC 5個textboxFor data_val_required,data_val

@Html.TextBoxFor(m => m.AdvertModel.Title, new 
         { 
          @class = "form-control", 
          type = "text", 
          placeholder = "Enter a descriptive title about the item for sale", 
          id = "Enter a descriptive title", 
          data_val_required = "The Title field is required.", 
          data_val = "true" 
         }) 

你可以看到我已經添加了data_val_required和data_val屬性做到這一點,這使得如下:

<input id="Enter a descriptive title" class="form-control" type="text" value="" placeholder="Enter a descriptive title about the item for sale" name="Title" data-val-required="The Title field is required." data-val-maxlength-max="100" data-val-maxlength="The field Title must be a string or array type with a maximum length of '100'." data-val="true"> 

當我運行應用程序並將其保留爲空並單擊提交時,ModelState.isValid始終爲真,當我期望它爲假時,它爲什麼一直說它是真的?

+2

按順序爲了使它成爲'ModelState.isValid',你需要將幾個屬性應用於模型的屬性,比如'[Required]'。簡單地將屬性添加到HTML標籤不會工作。 **注意**:'data_val_required'和'data_val'用於客戶端非侵害性驗證。 – 2015-03-02 07:25:58

+0

顯示你的模型 – 2015-03-02 07:31:28

+0

@JenishRabadiya我沒有在我的模型中的標題變量的必需屬性,我想弄清楚如果上述可能沒有[必需]屬性,並且能夠使用ModelState.isValid – 2015-03-02 07:33:56

回答

1

將表單提交給POST方法時,表單值包含由每個控件name屬性和value屬性組成的鍵/值對。在你的情況下,它將是AdvertModel.Title=The value entered in the textbox。沒有關於控件中其他屬性的信息被髮送到服務器。

data-*屬性是通過基於應用到模型和驗證屬性HTML輔助渲染是有益的,只有你有相關的@Html.ValidationMessageFor()幷包括相關的腳本文件(jQuery的,jquery.validate和jquery.validate.unobtrusive) 。

您將獲得包括服務器端和客戶端驗證,如果你包括在模型屬性

[Required(ErrorMessage = "The Title field is required.")] 
public string Title { get; set; } 

,並在視圖

@Html.TextBoxFor(m => m.AdvertModel.Title, new { @class = "form-control", placeholder = "Enter a descriptive title about the item for sale", title = "Enter a descriptive title" }) 
@Html.ValidationMessageFor(m => m.AdvertModel.Title) 

旁註的[Required]屬性:你不需要type="text" (這是由助手添加的),我假設id = "Enter a descriptive..."是一個錯字,它確實是title = "Enter a descriptive..."