我是 MVC 的新手,但我已经阅读了关于这个主题的几个问题。不过,没有一个答案能解决我的问题。这是我的代码(只是相关的属性):
C# 类
public class Customer
{
public int CustomerId { get; internal set; }
public string Name { get; set; }
}
public class Project
{
public int ProjectId { get; internal set; }
public string Name { get; set; }
public string Description { get; set; }
public string Comment { get; set; }
public Customer CurrentCustomer { get; set; }
}
控制器类
public ActionResult Edit(int id)
{
Project item = projectRepository.Get(id);
ViewBag.AllCustomers = new SelectList(
new CustomerRepository().Get(), // Returns a List<Customer> of all active customers.
"CustomerId",
"Name",
(object) item.CurrentCustomer.CustomerId);
return View(item);
}
看法
<div class="editor-label">
@Html.LabelFor(model => model.CurrentCustomer)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.CurrentCustomer, (SelectList)ViewBag.AllCustomers, "-- Select a Customer. --")
@Html.ValidationMessageFor(model => model.CurrentCustomer)
</div>
我已经尝试过不使用 ViewBag (在视图本身中进行 SelectList 实例化),这也不起作用。我尝试对 ID 进行硬编码,而不是使用 CurrentCustomer.CustomerId,但是当我在 SelectList 本身上设置断点时,我发现它可以正确处理所有内容。
所有其他 StackOverflow 问题都表明上述方法和属性名称应该可以正常工作,但对于我来说,我无法弄清楚这里出了什么问题。我错过了什么?