DropDownList для проблемы населения - PullRequest
1 голос
/ 19 октября 2010

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

public class SomeClass
{
  public int SomeClassID { get; set; }
  ...
}

public class AnotherClass
{
  public int AnotherClassID { get; set; }
  public int AnotherClassText { get; set; }
}

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

public class MyViewModel
{
  public SomeClass { get; set; }
  public List<AnotherClass> { get; set; }
}

У меня строго типизированное представление типа MyViewModel. Я хочу использовать DropDownListFor(), чтобы иметь список AnotherClass (значение = AnotherClassID, text = AnotherClassText) и иметь все, что выберет пользователь, для присваивания SomeClass.SomeClassID

Как мне это сделать?

Ответы [ 2 ]

2 голосов
/ 19 октября 2010

Модель:

public class SomeClass
{
    public int SomeClassID { get; set; }
}

public class AnotherClass
{
    public int AnotherClassID { get; set; }
    public int AnotherClassText { get; set; }
}

public class MyViewModel
{
    public SomeClass SomeClass { get; set; }
    public List<AnotherClass> AnotherClasses { get; set; }
}

Контроллер:

[HandleError]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new MyViewModel
        {
            AnotherClasses = new[] 
            {
                new AnotherClass { AnotherClassID = 1, AnotherClassText = 1 },
                new AnotherClass { AnotherClassID = 2, AnotherClassText = 2 },
                new AnotherClass { AnotherClassID = 3, AnotherClassText = 3 },
            }.ToList()
        };
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(MyViewModel model)
    {
        // TODO: 
        return View(model);
    }
}

Вид:

<%= Html.DropDownListFor(x => x.SomeClass.SomeClassID, 
    new SelectList(Model.AnotherClasses, "AnotherClassID", "AnotherClassText"))%>
0 голосов
/ 19 октября 2010

Вы можете добавить свойство к вашей ViewModel, которое получает и устанавливает SomeClassID, а затем сделать раскрывающийся список следующим образом:

Html.DropDownListFor(m => m.SomeClassId, 
    m.OtherClasses.Select(o => new SelectListItem { Text = o.Text, value = o.ID})
);
...