MVC3 & EF4 Как передать данные в список выбора с помощью модели представления - PullRequest
1 голос
/ 02 августа 2011

У меня есть viewmodel, которую я создаю в действии Create get,

public class SiteAdminCreateViewModel
{
    public int CustomerId { get; set; }
    public string ContactName { get; set; }
    [Required(ErrorMessage = "A contact number is Required")]
    public string ContactNo { get; set; }
    public IEnumerable<SelectListItem> CustomerNames { get; set; }
}

public ViewResult Create(SiteAdminCreateViewModel model) 
    {
        var query = from cs in repository.CustomerSites
                    select new SiteAdminCreateViewModel
                    {
                        CustomerId = cs.Customer.CustomerId,
                        ContactName = cs.ContactName,
                        ContactNo = cs.ContactNo,
                        CustomerNames = ??

                    };
        return View(query.ToList());            
    }

В viewmodel у меня есть список выбора, определенный как CustomerNames, я хочу иметь возможность использовать этот список выбора для вставкиЗначение CustomerId (также определенное в модели представления), взятое из таблицы Customers, которая является отдельной, но связанной сущностью,

Может ли кто-нибудь помочь с тем, как настроить список выбора в контроллере для получения списка CustomerNamesот объекта Customer?

Кроме того, мое представление вызывает исключение, когда я изменяю его объявление для принятия модели представления,

The model item passed into the dictionary is of type  'System.Data.Entity.Infrastructure.DbQuery`1[CustomerOrders.WebUI.Models.SiteAdminCreateViewModel]', but this dictionary requires a model item of type 'CustomerOrders.WebUI.Models.SiteAdminCreateViewModel'.

Любая помощь / совет приветствуется.

1 Ответ

3 голосов
/ 02 августа 2011
public ActionResult MyController(SiteAdminCreateViewModel model)
{
 var query = from cs in repository.CustomerSites
                select new SiteAdminCreateViewModel
                {
                    Value= cs.Customer.CustomerId,
                    Text= cs.ContactName
                };
    ViewBag.CustomerNames=query.ToList();
    return View(model);
}

вид изнутри

@Html.DropDownListFor("CustomerNames")
...