Asp.net mvc бритва с validate.unobtrusive - PullRequest
0 голосов
/ 10 марта 2011
Model----------------------
public class Test 
{
    [Required(ErrorMessage = "Must Be Select ")]
    public string TestList { get; set; }
}

Controller-----------------
public ActionResult Index(){
    Test test = new Test();

    string code = "11";
    Dictionary<string, string> selectList = new Dictionary<string, string>();
    selectList.Add("33", "33 value");
    selectList.Add("22", "22 value");
    selectList.Add("11", "11 value");
    ViewBag.TestList = selectList.Select(x => new SelectListItem { 
          Text = x.Value, Value = x.Key, Selected = x.Key.Equals(code) 
    }).ToList();

    return View(test);
}

View-----------------------
@model ~~~

@Html.DropDownListFor(model => model.TestList, null, "--SelectThis--")

я использую c #, mvc3, бритву с jquery.unobtrusive, что код классный, но есть проблема - просмотр исходного кода html

<select name="TestList" id="TestList"></select>
<select name="TestList" id="TestList" data-val=true data-val-required="Must Be Select">

я хочу получить второй результат ... как я могу сделать ??

1 Ответ

1 голос
/ 10 марта 2011

Если вы хотите получить второй результат, убедитесь, что этот помощник @Html.DropDownListFor находится внутри формы:

@using (Html.BeginForm())
{
    @Html.DropDownListFor(model => model.Code, null, "--SelectThis--")
    <input type="submit" value="OK" />
}

Также передача null в качестве второго аргумента вряд ли будет работать. Вы, вероятно, имели в виду:

@using (Html.BeginForm())
{
    @Html.DropDownListFor(
        model => model.Code, 
        new SelectList(ViewBag.TestList, "Value", "Text"), 
        "--SelectThis--"
    )
    <input type="submit" value="OK" />
}

и я настоятельно рекомендую следующее:

Модель:

public class Test 
{
    [Required(ErrorMessage = "Must Be Select ")]
    public string TestList { get; set; }

    public IEnumerable<SelectListItem> TestList { get; set; }
}

Контроллер:

public ActionResult Index()
{
    var selectList = new Dictionary<string, string>
    {
        { "33", "33 value" },
        { "22", "22 value" },
        { "11", "11 value" },
    };

    var model = new Test
    {
        Code = "11",
        TestList = selectList.Select(x => new SelectListItem 
        {
            Text = x.Value, Value = x.Key
        })
    };
    return View(model);
}

Вид:

@using (Html.BeginForm())
{
    @Html.DropDownListFor(
        model => model.Code, 
        new SelectList(Model.TestList, "Value", "Text"), 
        "--SelectThis--"
    )
    <input type="submit" value="OK" />
}
...