Простая проверка для выпадающего списка в MVC с использованием (Html.ValidationMessage) - PullRequest
2 голосов
/ 11 июля 2011

Контроллер

var productList = Enumerable.Range(1, 80).Select(
    x => new SelectListItem { Value = x.ToString(), Text = x.ToString() }
);
ViewData["products"] = new SelectList(productList.ToList(), "Value", "Text");

Просмотр

<%: Html.DropDownList("products", ViewData["products"] as SelectList, "--select--")%>
<%: Html.ValidationMessage("products", "Please Select the Product from the List")%> 
//This doesnt works on (ModelState.IsValid) I know the dropdown list data is coming
//from the view data not model , thats why model doesnt validate the particular dropdown 
//list while it validates other fields which are linked to model,
//Just want to know, how can i validate the above dropdownlist 

1 Ответ

11 голосов
/ 11 июля 2011

Вы связываете и имя ddl, и значения с products.Это неверно.Конечно, это наименьшая проблема с вашим кодом.Гораздо более серьезная проблема состоит в том, что вы используете ViewData вместо строго типизированных представлений и моделей представлений.

Таким образом, есть две возможности:

  1. Дрянная: есть свойство в вашей модели представления, к которому вы будете привязывать ваше раскрывающееся значение.

    [Required(ErrorMessage = "Please Select the Product from the List")]
    public string SelectedProduct { get; set; }
    

    , а затем использовать это имя свойства в качестве первого аргумента для слабо типизированного помощника DropDownList и ViewData в качестве второгоagrument:

    <%= Html.DropDownList( 
        "SelectedProduct", 
        ViewData["products"] as SelectList, 
        "--select--"
    ) %>
    <%= Html.ValidationMessage("SelectedProduct") %>
    
  2. Правильный путь: который, конечно, использует модели реального вида (мне надоело повторять это, просто Google, вы получите миллиардов ответов, только мной и просто на этом сайте по этой теме).Это будет выглядеть так:

    <%: Html.DropDownListFor( 
        x => x.SelectedProduct, 
        Model.Products, 
        "--select--"
    ) %>
    <%= Html.ValidationMessageFor(x => x.SelectedProduct) %>
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...