Что я делаю неправильно с asp.net-mvc dropdownlist?

Я использую dropdownlist в одном из моих create.aspx, но это некоторые, как, кажется, не работает...

public IEnumerable<SelectListItem> FindAllMeasurements()
    {
        var mesurements = from mt in db.MeasurementTypes
                          select new SelectListItem
                          {
                             Value = mt.Id.ToString(),
                             Text= mt.Name
                          };
        return mesurements;
    }

и мой контроллер,

 public ActionResult Create()
    {
      var mesurementTypes = consRepository.FindAllMeasurements().AsEnumerable();
     ViewData["MeasurementType"] = new SelectList(mesurementTypes,"Id","Name");
     return View();
    } 

и мой create.aspx имеет это,

<p>
  <label for="MeasurementTypeId">MeasurementType:</label>
    <%= Html.DropDownList("MeasurementType")%>
     <%= Html.ValidationMessage("MeasurementTypeId", "*") %>
   </p>

Когда я выполняю это, я получил эти ошибки,

DataBinding: 'System.Web.Mvc.SelectListItem' does not contain a 
 property with the name 'Id'.
7
задан ACP 3 May 2010 в 06:17
поделиться

2 ответа

В вашем контроллере вы создаете новый SelectList из IEnumerable , что неверно, потому что вы уже указали Свойства значения и Текст .

У вас есть два варианта:

public ActionResult Create()
{
    var mesurementTypes = consRepository.FindAllMeasurements();
    ViewData["MeasurementType"] = mesurementTypes;
    return View();
}

или:

public ActionResult Create()
{
    ViewData["MeasurementType"] = new SelectList(db.MeasurementTypes, "Id", "Name");
    return View();
}

Существует также третий и предпочтительный способ использования строго типизированного представления:

public ActionResult Create()
{
    var measurementTypes = new SelectList(db.MeasurementTypes, "Id", "Name");
    return View(measurementTypes);
}

и в представлении:

<%= Html.DropDownList("MeasurementType", Model, "-- Select Value ---") %>
7
ответ дан 7 December 2019 в 05:19
поделиться

Как следует из сообщения об ошибке, вам нужен IEnumerable, а не IEnumerable.

Конструктор для SelectList имеет перегрузку, которая принимает IEnumerable. См. .net MVC, SelectLists и LINQ

1
ответ дан 7 December 2019 в 05:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: