我很新的MVC,所以忍受我,但我似乎无法绑定一个选择列表中的值到选定对象的实例在回发期间MVC 4.从Dropdownlist绑定SelectedItem到模型对象在MVC 4
假设我必须创建一位教师作为学校的成员。我有一个ViewModel类定义为这样:
public class RegisterTeacherModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email address")]
public string Email { get; set; }
[Required]
[Display(Name = "School")]
public School SelectedSchool { get; set; }
[ScaffoldColumn(false)]
public Guid UserId
{
get;
set;
}
public SelectList PossibleSchools
{
get;
private set;
}
public RegisterTeacherModel(IRepository<School> schoolRepo)
{
PossibleSchools = new SelectList(schoolRepo, "Id", "Name");
}
}
而我的观点:
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>RegisterTeacherModel</legend>
<div class="editor-label">
@Html.LabelFor(model => model.UserName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Email)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Email)
@Html.ValidationMessageFor(model => model.Email)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.SelectedSchool)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.SelectedSchool, Model.PossibleSchools)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
最后,我的控制器方法:
[HttpPost, ActionName("Create")]
public ActionResult CreateTeacher(RegisterTeacherModel teacherModel)
{
if (ModelState.IsValid)
{
try
{
...
}
}
}
但是,当我收到RegisterTeacherModel对象回我的控制器中的Create方法,SelectedSchool始终为空。我必须以模型绑定器在回发中重新创建对象引用的方式丢失一些东西。任何人都可以将我指向正确的方向吗?
如果您在创建页面上查看源代码,那么下拉列表的ID是什么?什么是价值? – Jonathan 2012-07-18 19:05:02