ASP.NET MVC 2 DropDownList не устанавливает выбранное значение - PullRequest
2 голосов
/ 08 февраля 2012

Я пытаюсь заполнить раскрывающееся значение выбранным значением. Я ссылался на соответствующие статьи, и я делаю то же самое. Выпадающий список не заполнен выбранным значением. Не уверен, что мне не хватает.

Код контроллера:

var RegionId = new[] { 
                new RegionKeyValues { RegionId = 1, RegionValue = "A" }, 
                new RegionKeyValues { RegionId = 2, RegionValue = "B" }, 
                new RegionKeyValues { RegionId = 3, RegionValue = "D" } 
            };
ViewData["RegionId"] = new SelectList(RegionId, "RegionId", "RegionValue", 1); 

Просмотр кода:

<%= Html.DropDownList("RegionId",
                      (SelectList)ViewData["RegionId"],
                      "-- Select --")%>

Ответы [ 3 ]

5 голосов
/ 08 февраля 2012

Я думаю, что проблема в том, что ваше свойство имеет имя RegionId, а также имя ViewData. Измените один и посмотрите, что произойдет.

2 голосов
/ 08 февраля 2012

Я бы попробовал <%=Html.DropDownList("RegionId", new SelectList((IEnumerable)ViewData["RegionId"], "Value", "Text",1),"-- Select --")%>

Установка значения в реальном виде.

Также в общем случае я бы создал строго типизированную ViewModel и создал бы свойства, хранящие значения списка выбора в виде IEnumerable<SelecListItem>

Тогда вы можете сделать

<%=Html.DropDownListFor(a=>a.RegionId, new SelectList(Model.Regions, "Value", "Text"),"-- Select --")`%>

Где RegionId будет фактическим значением для установки, а Model.Regions хранит список возможных регионов.

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

1 голос
/ 08 февраля 2012

Рита,

Вот мои усилия на этом:

модель:

namespace MvcApplication1.Models
{
    public class RegionKeyValues
    {
        public int RegionId { get; set; }
        public string RegionValue { get; set; }
    }

    public class RegionKeyValuesViewModel
    {
        public int SelectedRegionId { get; set; }
        public IEnumerable<RegionKeyValues> RegionList { get; set; }
    }
}

Действие контроллера:

public ActionResult Index()
{
    var regionList = new[] { 
        new RegionKeyValues { RegionId = 1, RegionValue = "A" }, 
        new RegionKeyValues { RegionId = 2, RegionValue = "B" }, 
        new RegionKeyValues { RegionId = 3, RegionValue = "D" } 
    };

    var viewModel = new RegionKeyValuesViewModel
    {
        RegionList = regionList, 
        SelectedRegionId = 1 // hardcoded here, but in real-life, from the db
    };

    ViewData.Model = viewModel;

    return View();
}

Посмотреть код (в Razor):

@model MvcApplication1.Models.RegionKeyValuesViewModel
@{
    ViewBag.Title = "Home Page";
}

@Html.DropDownListFor(a => a.SelectedRegionId, 
    new SelectList(Model.RegionList, "RegionId", "RegionValue", 
        Model.SelectedRegionId), "-- Select --")

так что в основном я передаю строго типизированную ViewModel в представление и устанавливаю выбранный RegionId в контроллере и передаю его в Model.SelectedRegionId.В реальном приложении вы, очевидно, получили бы viewModel из БД или другой структуры.

стоит рассмотреть в качестве альтернативы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...