Click here to Skip to main content
11,718,016 members (83,921 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 OriginalGriff 215
1 F-ES Sitecore 210
2 Maciej Los 140
3 Jochen Arndt 120
4 Andy Lanng 115
0 Sergey Alexandrovich Kryukov 1,649
1 OriginalGriff 535
2 Maciej Los 529
3 Richard MacCutchan 440
4 CHill60 415

Advertise | Privacy | Mobile
Web03 | 2.8.150901.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