我正在開發一個MVC 4應用程序,我有一些麻煩。 這裏是我的模型的摘錄:MVC 4模型與自定義類型成員不工作
public class RegistryModel
{
[DisplayName("Registry id")]
public int registryId { get; set; }
[Required]
[DataType(System.ComponentModel.DataAnnotations.DataType.Date)]
[DisplayName("Reception date")]
public DateTime? receivedDate { get; set; }
[Required]
[DisplayName("Source")]
public Source source { get; set; }
}
Source對象:
public class Source
{
public virtual string sourceCode { get; set; }
public virtual string fullName { get; set; }
public virtual string shortName { get; set; }
public virtual string type { get; set; }
public virtual IList<Registry> registryList { get; set; }
}
控制器:
public ActionResult Create()
{
var sourceRepo = new Repository<DTOS.Source>(MvcApplication.UnitOfWork.Session);
IEnumerable<SelectListItem> sourcesEnum = sourceRepo.FilterBy(x=>x.type.Equals("C")).Select(c => new SelectListItem { Value = c.sourceCode, Text = c.fullName });
ViewBag.Sources = sourcesEnum;
return View();
}
最後認爲
@model Registry.Models.RegistryModel
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>New Registry</legend>
<div class="editor-label">
@Html.LabelFor(model => model.source)
</div>
<div class="editor-field">
@Html.DropDownListFor(Model => Model.source.sourceCode, (IEnumerable<SelectListItem>)ViewBag.Sources, String.Empty)
@Html.ValidationMessageFor(model => model.source)
</div>
如果我選擇來源在下拉列表中,它工作正常。但是,如果我沒有選擇任何提交,我沒有錯誤消息,即使它在模型中註釋爲[必需]。
在控制器級別調試HttpPost Create之後,我發現返回的RegistryModel的源成員是實例化的,但其所有成員都爲null(sourceCode,fullName等)。
爲什麼MVC實例化模型的源成員,如果我在提交表單之前未在下拉列表中選擇任何源?
我試圖用這個修改VUE:
@Html.DropDownListFor(Model => **Model.source**, (IEnumerable<SelectListItem>)ViewBag.Sources, String.Empty)
這一次我有,如果我提交不選擇任何來源,但如果我選擇一個,我在提交後,另一條錯誤消息,稱該錯誤信息'提交之前選擇的值用戶代碼無效'
任何幫助將不勝感激! B.