2
您好我有视图中的下拉列表一个MVC应用程序:MVC验证了DROPDOWNLIST
<div class="editor-label">
@Html.LabelFor(model => model.CompanyId)
</div>
<div class="editor-field">
@Html.DropDownList("CompanyId", "--- Select ---")
@Html.ValidationMessageFor(model => model.CompanyId)
</div>
在这个模型中,我有:
[Required(ErrorMessage = "Company is a required field.")]
[Display(Name = "Company:")]
public int CompanyId{ get; set; }
在控制器创建GET方法我有:
ViewBag.CompanyId= new SelectList(_repository.GetAll<Company>(), "Id", "Name");
所以最初编辑器是一个标准的文本框,验证工作正常。现在我已将其更改为下拉列表,除验证外,一切正常。所以在HTTP POST创建,如果你没有从下拉列表中选择任何东西ModelState.IsValid
是错误的,这是正确的。
问题是与下拉列表中的验证消息不再出现在这个领域,就像他们当它是一个文本框。我明白我可能有ValidationMessageFor不正确。
有人可以请告诉我如何得到这个工作?
这看起来不错,但要得到它的工作我需要一个属性Model.Companies在我的模型?我没有这个。也许我应该? – AnonyMouse
是的,你会的。正如你可以从我的代码中看到的,我在供应商视图模型中有一个属性,这是我验证的对象。视图模型由我需要基本构建表单的其他属性组成,例如填充下拉列表的列表。做这些事情有很多方法,但我发现这是使用它的最好方法。希望能帮助到你... – macou