无法使用来自强类型视图的MVC3(razor)中的@ Html.DropDownListFor字段的值绑定模型。
用于强类型视图的模型:
public class MyModel
{
public string Name{get;set;}
pulic int Status_ID{get;set;}
}
在强类型视图中:
@Html.DropDownListFor(m=> m.Status_ID, new SelectList(Repo.AllStatus, "ID", Name"), new {@style = "width: 100%;" })
在提交表格之前,我选择了ID = 24的选项(即选择了值= 24选项)
在控制器中
public ActionResult AddMyModel(MyModel myModel)
{
}
调试时,在控制器中,我得到了: myModel.Name是期望的值但是 myModel.Status_ID为0而不是24
我哪里错了?
答案 0 :(得分:2)
您需要将视图模型传递到视图,并且已填充所有状态。
这是您的问题的解决方案。修改它以适应您的方案。我希望我没有遗漏任何东西。下面的代码是我假设您的模型可能看起来像。
您的状态类:
public class Status
{
public int Id { get; set; }
public string Name { get; set; }
}
在您的视图中,您需要传递包含所有状态列表的视图模型:
public class YourViewModel
{
public int StatusId { get; set; }
public IEnumerable<Status> Statuses { get; set; }
}
你的控制器:
public class YourController : Controller
{
private readonly IStatusRepository statusRepository;
public YourController(IStatusRepository statusRepository)
{
this.statusRepository = statusRepository;
}
public ActionResult YourAction()
{
YourViewModel viewModel = new YourViewModel
{
Statuses = statusRepository.FindAll()
};
return View(viewModel);
}
}
然后你的观点看起来像这样:
@model YourProject.ViewModels.Statuses.YourViewModel
@Html.DropDownListFor(
x => x.StatusId,
new SelectList(Model.Statuses, "Id", "Name", Model.StatusId),
"-- Select --"
)
@Html.ValidationMessageFor(x => x.StatusId)
我希望这可以帮助你朝着正确的方向前进,并阐明你想要实现的目标。