Click here to Skip to main content
11,812,712 members (71,732 online)
Rate this: bad
Please Sign up or sign in to vote.
See more: ASP.NET MVC3
How to keep the validation message in mvc3 if dropdownlist is formed using select and option tags.

Please find the HTML code for the dropDownlist
<select name="SwList" style="width: 150px;">
    <option>--select-- </option>
    @foreach (var Sw in Model.SwDetails)
        if (SwDetails.SwId == @Sw.SwId)
        <option selected="selected" value=@Sw.SwId >
        <option value=@Sw.SwId >
       @*  @Html.ValidationMessageFor(Sw => Sw.SwId)*@
Posted 14-Sep-12 3:14am
Edited 14-Sep-12 3:20am

1 solution

Rate this: bad
Please Sign up or sign in to vote.

Solution 1

Better to have a model that collects the ID of the selected item, as well as your list of possible options.

e.g. Soemthing along these lines

// View model
public class MyViewModel
    public int SelectedValue {get; set;}
    public IEnumerable<swdetails> {get; set;}
// Controller
public ActionResult ShowMyView
    var model = new MyViewModel();
    model.SwDetails = // However you get your list of items    
// View
@model MyViewModel
@Html.DropDownListFor(m => m.SelectedValue, new SelectList(Model.RatingScaleOptions, "SwId", "SwName"), "[Select One]")
@Html.ValidationMessageFor(m => m.SelectedValue)</swdetails>

So, you use the 'SelectValue' to retrieve the value that is set by your user picking an item. Validation is against this field.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 Abhinav S 270
1 CHill60 180
2 KrunalRohit 154
3 Palash Mondal_ 145
4 Sergey Alexandrovich Kryukov 140
0 OriginalGriff 3,877
1 KrunalRohit 2,496
2 CPallini 2,240
3 Maciej Los 2,205
4 ppolymorphe 1,750

Advertise | Privacy | Mobile
Web01 | 2.8.151002.1 | Last Updated 14 Sep 2012
Copyright © CodeProject, 1999-2015
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100