DropDownListFor в MVC3 - PullRequest
       10

DropDownListFor в MVC3

3 голосов
/ 03 апреля 2012

ОК, во-первых, я новичок в ASP.NET MVC. Теперь я пытаюсь добавить раскрывающийся список в представлении C # Razor. Вопрос в том, можно ли в любом случае напрямую назначить List () @ Html.DropDownListFor ...? MyClass выглядит так

public class MyClass
{
  public int ID {get; set;}
  public string Itemstring {get; set;}
}

ViewModel выглядит так

public class MyViewModel
{
  public int ID { get; set; }
  public List<MyClass> MyClassList {get; set; }
}

Метод действия контроллера выглядит следующим образом

public ActionResult Home()
{
MyViewModel mvm = new MyViewModel () {
new MyClass() { ID=1, Itemstring="My Item1" },
new MyClass() { ID=2, Itemstring="My Item2" },
new MyClass() { ID=3, Itemstring="My Item3" }
}
}

On View: ЭТО ГДЕ Я НЕ УВЕРЕН, КАК ИСПОЛЬЗОВАТЬ

@model xyzNameSpace.Models.MyViewModel
<div>
@Html.DropDownListFor(x => x.ID, Model.MyClassList);
<a href="@Url.Action("Selected")><img src="../../Content/images/selected.gif" alt="Proceed" /> </a>
</div>

- поэтому, когда пользователь выбирает один элемент из раскрывающегося списка и нажимает на изображение, он должен вызвать (или вызвать не уверен, какое слово использовать) действие «Выбрано» в элементе управления и связать модель с выбранным значением. один помочь мне, как это сделать ...?

Спасибо Siri.

Ответы [ 3 ]

5 голосов
/ 03 апреля 2012

Html.DropDownListFor имеет 6 перегрузок, и все они принимают IEnumerable<SelectListItem> в качестве параметра, который будет содержать ваши значения. Вы не можете прямо использовать свой собственный класс для этого, поэтому вы получаете эту ошибку, когда пытаетесь решить Kyle.

Добавьте это к вашей модели:

public List<SelectListItem> ListToUse { get; set; }

Контроллер:

MyViewModel model = new MyViewModel();
model.MyClassList = new List<MyClass>
{
    new MyClass() { ID=1, Itemstring="My Item1" },
    new MyClass() { ID=2, Itemstring="My Item2" },
    new MyClass() { ID=3, Itemstring="My Item3" }
}
model.ListToUse = model.MyClassList
    .Select(x => new SelectListItem{ Value = x.ID, Text = x.Itemstring })
    .ToList();

По виду:

@Html.DropDownListFor(x => x.ID, Model.ListToUse);

Я не проверял этот код.

1 голос
/ 16 января 2014

в модели

    public class modelname
            {
              public selectlist getdropdown()
               {
                  IEnumerable<SelectListItem> EntityList = edmx.tblEntities.AsEnumerable().Select(a => new SelectListItem { Text = a.name, Value = a.id.ToString() }).ToList();
                   return new SelectList(EntityList, "Value", "Text");             

 }
        }

в поле зрения

@Html.DropDownListFor(model => model.source_entity, Model.getdropdown(), "--Select--")

в контроллере

public ActionResult home()
        {
            return View(new modelname());
        }
1 голос
/ 03 апреля 2012

Если я вас правильно понял, вы хотите опубликовать выбранный элемент из выпадающего списка на сервере при нажатии кнопки «Продолжить»?

Для этого вам понадобится форма:

@model xyzNameSpace.Models.MyViewModel
@using(Html.BeginForm())
{
    <div>
    @Html.DropDownListFor(x => x.ID, Model.MyClassList);

    <input type="submit" value="Proceed" />
    </div>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...