我想在選擇元素上使用客戶端驗證,但它在表單初始加載時不起作用。選擇元素客戶端驗證僅在文章後出現
這是在我的模型屬性(這實際上是一類在我的模型中):
[Required(ErrorMessage="Please select an application type.")]
public override string Application
{
get
{
return base.Application;
}
set
{
base.Application = value;
}
}
這是視圖的一部分
<div class="field_title">
Application Type
</div>
<div class="field_validation">
@Html.ValidationMessageFor(model => model.CreatePromocode.Application)
</div>
<div class="form_field">
@Html.DropDownListFor(model => model.CreatePromocode.Application,
SharedLibrary.Entities.DropDownLists.PromocodeApplicationOptions,
"Select an application type...")
</div>
這是下拉列表項目代碼,我這樣做,所以我可以在其他應用程序中使用它,只是在一個地方而不是在幾個地方更改它
public class DropDownLists
{
public static List<SelectListItem> PromocodeApplicationOptions
{
get
{
return new List<SelectListItem>()
{
new SelectListItem() {
Text="Earlybird Registration", Value="Earlybird"},
new SelectListItem() {
Text="Standard Registration", Value="Standard"},
new SelectListItem() {
Text="Monday Registration", Value="Monday"},
new SelectListItem() {
Text="Tuesday Registration", Value="Tuesday"},
new SelectListItem() {
Text="Wednesday Registration", Value="Wednesday"},
new SelectListItem() {
Text="Multiple Tickets", Value="TicketMany"},
new SelectListItem() {
Text="Single Ticket",Value="TicketSingle"}
};
}
}
}
我遇到的問題是當用戶第一次到達頁面時,下拉列表沒有任何客戶端驗證屬性。它看起來像這樣
<select id="CreatePromocode_Application" name="CreatePromocode.Application">
一旦形式發佈然而,和的ModelState是無效的,因爲應用程序的類型沒有被選中,在客戶端驗證,然後出現在下拉列表中正常工作。
<select data-val="true"
data-val-required="Please select an application type."
id="CreatePromocode_Application"
name="CreatePromocode.Application"
class="valid">
我該如何從一開始就得到客戶端驗證工作?我寧願不必手動添加必需的屬性和錯誤消息,因爲這種方式會破壞使用數據註釋的目的。
這是否只發生在下拉列表中或與您的其他模型屬性? – HTX9
只有在下拉列表中,其他屬性(文本框)第一次都有客戶端驗證。 –