我的应用程序有问题,我试着举例说明,我有一个表单,这个表单存在几个文本框和下拉列表。为了可重用性,我将 3 个下拉列表合并到一个局部视图中,这个局部视图我用 @Html.Action 加载,这工作正常,当我启动表单时,我看到一切都按原样显示,虽然我不知道为什么但那些需要下拉列表直接以红色开头显示,并表示它是必填字段。
但是当我填写所有内容并从下拉列表中选择值并单击“确定”时,下拉列表中的值是 NULL。
我认为通过代码示例会更容易理解:
主要型号:
public class FormModel
{
[Required]
public string UserName { get; set; }
[Required]
[Display(Name = "Birthdate")]
public DateTime? Birthdate { get; set; }
//This is what i'm talking about, that is not being set, the location
public Location Location { get; set; }
}
这是位置类,然后传递给局部视图,通常我认为应该设置,它看起来像这样:
public class Location
{
[Required]
[Display(Name = "Country")]
public string CountryId { get; set; }
[Required]
[Display(Name = "Region")]
public string RegionId { get; set; }
[Required]
[Display(Name = "City")]
public string CityId { get; set; }
}
现在我们有了该位置的局部视图:
@model TestWebsite.Models.Location
<tr>
<td class="editor-label">
@Html.LabelFor(m => m.CountryId)
</td>
<td class="editor-field">
@Html.DropDownListFor(m => m.CountryId, Model.Countries, "---select--", null)
</td>
<td>
@Html.ValidationMessageFor(m => m.CountryId)
</td>
</tr>
<!-- Region -->
<tr>
<td class="editor-label">
@Html.LabelFor(m => m.RegionId)
</td>
<td class="editor-field">
@Html.DropDownListFor(m => m.RegionId, Enumerable.Empty<SelectListItem>(), "---select--", null)
</td>
<td>
@Html.ValidationMessageFor(m => m.RegionId)
</td>
</tr>
<!-- City -->
<tr>
<td class="editor-label">
@Html.LabelFor(m => m.CityId)
</td>
<td class="editor-field">
@Html.DropDownListFor(m => m.CityId, Enumerable.Empty<SelectListItem>(), "---select--", null)
</td>
<td>
@Html.ValidationMessageFor(m => m.CityId)
</td>
</tr>
然后我们以如下形式调用这个局部视图:
@Html.Action("LocationGroup", "Account", Model.Location)
最后在控制器中:
[ChildActionOnly]
public ActionResult LocationGroup(Location model)
{
model.Countries = GetCountries();
return PartialView("_LocationView", model);
}
我知道这是很多代码,但我希望你能帮助我......