Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 ViewModel中是否可能有强类型验证消息?_Asp.net Mvc 3 - Fatal编程技术网

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>
}