Asp.net mvc 3 ViewModel中是否可能有强类型验证消息?
这是有效的:Asp.net mvc 3 ViewModel中是否可能有强类型验证消息?,asp.net-mvc-3,Asp.net Mvc 3,这是有效的:@Html.ValidationMessage(“名称”) 问题是否可以让强类型助手工作?:@Html.ValidationMessageFor(model=>model.EventInVM.Name) 视图模型: public class EventViewModel { public Event EventInVM { get; set; } public IList<Series> ListOfSeries { get; set; } } 看法
@Html.ValidationMessage(“名称”)
问题是否可以让强类型助手工作?:@Html.ValidationMessageFor(model=>model.EventInVM.Name)
视图模型:
public class EventViewModel
{
public Event EventInVM { get; set; }
public IList<Series> ListOfSeries { get; set; }
}
看法
创建
@使用(Html.BeginForm()){
@Html.ValidationSummary(false)
事件
@Html.Partial(“_CreateOrEdit”,Model)
}
局部的
@model dave.Controllers.EventViewModel
<div class="editor-label">
@Html.LabelFor(model => model.EventInVM.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.EventInVM.Name)
@Html.ValidationMessageFor(model => model.EventInVM.Name)
</div>
@model.dave.Controllers.EventViewModel
@LabelFor(model=>model.EventInVM.Name)
@EditorFor(model=>model.EventInVM.Name)
@Html.ValidationMessageFor(model=>model.EventInVM.Name)
请参见此处的答案:
我相信这是因为您引用了一个属性之外的另一个属性。而不是
@Html.Partial(“\u CreateOrEdit”,Model)
使用@Html.EditorForModel()
:
@使用(Html.BeginForm()){
@Html.ValidationSummary(false)
事件
@Html.EditorForModel()
}
然后将编辑器模板放入
~/Views/Shared/EditorTemplates/EventViewModel.cshtml
是否使用数据注释进行验证?例如,您的事件
类型名称
属性是否具有[必需]
属性或类似属性?不,我没有。我使用LightSpeed作为我的ORM,并使用自定义EntityModelBinder在注释中流动。我认为这很好,因为验证摘要显示了我的预期。。已经上传了一张截图OK。我猜错误会添加到ModelState.errors
集合中,但没有正确的键。如果错误没有与属性名匹配的键,则Html.ValdiationMessageFor
将不会显示它,但摘要仍然会显示。谢谢@Darin-是的,我更喜欢使用它。但是没有帮助强类型助手。谢谢@Adam。是的,这让我想到了我在上面实现的弱类型助手。。我想知道是否有更好的办法。
<h2>Create</h2>
@using (Html.BeginForm()) {
@Html.ValidationSummary(false)
<fieldset>
<legend>Event</legend>
@Html.Partial("_CreateOrEdit", Model)
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
@model dave.Controllers.EventViewModel
<div class="editor-label">
@Html.LabelFor(model => model.EventInVM.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.EventInVM.Name)
@Html.ValidationMessageFor(model => model.EventInVM.Name)
</div>
@using (Html.BeginForm()) {
@Html.ValidationSummary(false)
<fieldset>
<legend>Event</legend>
@Html.EditorForModel()
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}