我正在与Asp.Net MVC3合作开展一个项目
在我拥有的视图中@Html.ValidationSummary(true),通常它产生
<div class="validation-summary-errors">
<ul>
<li>Something bad Happened!</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
如何将此ValidationSummary扩展到MyValidationSummary并生成如下所示的Html代码模板:
<div class="notification warning">
<span></span>
<div class="text"> <p>Something bad Happened!</p> </div>
</div>
Run Code Online (Sandbox Code Playgroud) 我想展示一个带有"alert-error"Bootstrap样式的ValidationSummary mcv3.
我正在使用Razor视图,并使用此代码显示模型错误:
@Html.ValidationSummary(true, "Errors: ")
Run Code Online (Sandbox Code Playgroud)
它生成如下HTML代码:
<div class="validation-summary-errors">
<span>Errors:</span>
<ul>
<li>Error 1</li>
<li>Error 2</li>
<li>Error 3</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
我也试过这个:
@Html.ValidationSummary(true, "Errors:", new { @class = "alert alert-error" })
Run Code Online (Sandbox Code Playgroud)
它工作正常,但没有关闭按钮(X)
它生成如下HTML代码:
<div class="validation-summary-errors alert alert-error">
<span>Errors:</span>
<ul>
<li>Error 1</li>
<li>Error 2</li>
<li>Error 3</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
但Bootstrap警报应该有这个按钮进入div:
<button type="button" class="close" data-dismiss="alert">×</button>
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
这个作品! - 谢谢Rick B.
@if (ViewData.ModelState[""] != null && ViewData.ModelState[""].Errors.Count() > 0)
{
<div class="alert alert-error">
<a class="close" data-dismiss="alert">×</a>
<h5 class="alert-heading">Ingreso Incorrecto</h5>
@Html.ValidationSummary(true)
</div>
}
Run Code Online (Sandbox Code Playgroud)
我还必须从"site.css"中删除".validation-summary-errors"类,因为该样式定义了其他字体颜色和权重.
我正在使用客户端验证,我希望以下消息仅在我出错时显示.我试图在任何字段无效的情况下使用此一般错误.
目前
"*表示必填项"
在验证之前总是显示.
<%: Html.ValidationSummary(false, "* denotes required field.")%>
Run Code Online (Sandbox Code Playgroud)
我正在使用模型绑定在客户端和MVC上执行验证.
ASP.NET 2.0.假设我有两个验证组valGrpOne和valGrpTwo; 和两个验证摘要valSummOne和valSummTwo; 分解部分的原因纯粹是美学.一个提交按钮,触发两个组的验证.
现在我想触发客户端验证,并希望同时显示BOTH验证摘要;
所以我设置了一个Javascript函数,它被调用btnSubmit,并且在这个函数中我调用Page_ClientValidate("valGrpOne")并Page_ClientValidate("valGrpTwo")连续; 问题只是一次显示一个摘要(但我真的希望两者都显示!)
有关如何从客户端代码同时显示两个验证摘要的任何想法?
非常类似于以下问题,它为服务器端提供了答案. 使用单个按钮触发多个验证组?
我有一个简单的aspx页面,其中包含一些TextBox和一个提交按钮.某些字段是必需的,按钮下方是ValidationSummary.完整的表单大于屏幕高度,因此必须向下滚动才能到达提交按钮.如果我没有填写所有必填字段并单击提交验证按预期失败,验证摘要会在按钮下方显示一些信息消息.验证发生在客户端上,不会发生回发.
所以这一切都是有希望的.但令人不安的是,当我点击提交按钮时,页面会移动("跳转")到顶部位置.要查看验证摘要,必须再次向下移动页面.
我试图将ShowSummary属性设置为false(这没有多大意义):验证仍然有效(没有回发)但在这种情况下页面不会移动到顶部位置.所以问题似乎取决于渲染验证文本.
有没有办法防止这个页面跳转?
先感谢您!
更新:
我上面描述的行为似乎不依赖于浏览器.我已经在五种不同的浏览器中进行了测试,并且它在各处都是相同的.
我以前遇到过这个问题,但从未完全解决过.我有一个包含多个验证器和CustomValidator的表单.
<asp:Label ID="lblMemberNum" runat="server" Text="Membership #:" CssClass="LabelMedium" ></asp:Label>
<asp:TextBox ID="txtMemberNum" runat="server" CssClass="TextBox" ></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvMemberNum" SetFocusOnError="True" runat="server"
ControlToValidate="txtMemberNum" ErrorMessage="[ Membership # ] is required"
CssClass="ValidationMessage" Display="Dynamic" >*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="revMemberNum" Display="Dynamic" runat="server"
ControlToValidate="txtMemberNum" CssClass="ValidationMessage"
ErrorMessage="[ Membership # ] can only contain letters"
ValidationExpression="^([a-zA-Z\d]+)$" >*</asp:RegularExpressionValidator>
<asp:CustomValidator ID="cvMemberNum" runat="server"
CssClass="ValidationMessage" Display="Dynamic"
ControlToValidate="txtMemberNum" ValidateEmptyText="false"
OnServerValidate="cvMemberNum_Validate"
ErrorMessage="This membership number is already registered">*</asp:CustomValidator>
<asp:ValidationSummary ID="ValidationSummary1" runat="server"
CssClass="ValidationMessage"
ShowMessageBox="True" ShowSummary="False" />
Run Code Online (Sandbox Code Playgroud)
在服务器端:
protected void cvMemberNum_Validate(object source, ServerValidateEventArgs args)
{
try
{
args.IsValid = (!CampaignRegistration.IsMemberRegistered(args.Value));
}
catch
{ …Run Code Online (Sandbox Code Playgroud) 我有一个注册表单,我使用客户端验证(在我的视图模型上指定Required,StringLength等).表格目前几乎是脚手架创建它的方式:
@using (Html.BeginForm("Index", "Registration"))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Registration details</legend>
@Html.ValidationSummary(false, "Please correct these errors:")
@Html.ValidationMessageFor(model => model.Username)
<div class="editor-label">
@Html.LabelFor(model => model.Username)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Username)
</div>
<p>
<input type="submit" value="Register" />
</p>
</fieldset>
}
Run Code Online (Sandbox Code Playgroud)
唯一的区别是我将ValidationMessageFor移动到ValidationSummary下面的右上角.
我想要做的是在验证摘要中显示客户端验证错误.目前,它们只显示在表单的顶部,但未使用验证摘要.如何使用验证摘要显示客户端验证错误?这甚至可能吗?
更新
Darin我在新项目中使用了你的代码,当客户端验证开始时,这就是我的样子:
客户端验证http://i56.tinypic.com/i3f320.jpg
我希望在验证摘要中显示这个,并应用验证摘要样式.我还提交了表格,然后看起来像这样:
提交http://i55.tinypic.com/2hqcowh.jpg后
谢谢,
B3N
asp.net-mvc validationsummary asp.net-mvc-2-validation asp.net-mvc-3
假设您有一个标准的ValidationSummary:
<%: Html.ValidationSummary(excludePropertyErrors: true) %>
Run Code Online (Sandbox Code Playgroud)
如果ModelState包含属性的模型错误但不包含模型本身的模型错误,则ValidationSummary将呈现以下HTML:
<div class="validation-summary-errors"><ul><li style="display:none"></li></ul></div>
Run Code Online (Sandbox Code Playgroud)
由于列表周围有红色边框,因此显示为空列表但仍然可见.这对我来说似乎是个错误.我可以关闭ValidationSummary助手将呈现一个空列表吗?
我在表单的顶部有@ Html.ValidationSummary("请检查以下错误:")的视图.始终呈现文本"请检查以下错误:" ,无论模型状态是否有效(我已在视图和控制器中验证了模型状态).
谁能指出我为什么会这样?我觉得我在这里遗漏了一些非常基本的东西 - 但我很难过!
我想使用以下字符串格式化我的ValidationSummary的标题:
"There are {0} errors on this page."
Run Code Online (Sandbox Code Playgroud)
如何在控制器中执行错误并将其添加到ViewData中,如何找出错误数?