标签: validationsummary

集合的验证摘要

编辑:将此问题升级到MVC 2.0
使用asp.net MVC 2.0是否存在创建验证摘要的现有方法,该方法对包含集合的模型有意义?如果没有,我可以创建自己的验证摘要

示例型号:

public class GroupDetailsViewModel
{
    public string GroupName { get; set; }
    public int NumberOfPeople { get; set; }
    public List<Person> People{ get; set; }
}

public class Person
{
    [Required(ErrorMessage = "Please enter your Email Address")]
    [RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", ErrorMessage = "Please enter a valid Email Address")]
    public string EmailAddress { get; set; }

    [Required(ErrorMessage = "Please enter your Phone Number")]
    public string Phone { get; set; }

    [Required(ErrorMessage = "Please enter your First Name")]
    public …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc validationsummary asp.net-mvc-2

6
推荐指数
1
解决办法
989
查看次数

ASP.NET登录控件 - 我可以将FailureText作为项添加到ValidationSummary中吗?

我目前正在使用ASP.NET登录控件.我可以设置自定义失败文本,如果登录失败,我可以在显示失败文本的页面上添加文字.我还在页面上有一个验证摘要,我收集了所有可能发生的错误(目前它只是验证用户输入了登录名和密码.

如果我可以将登录控件的失败文本添加为​​验证摘要中的项目,那将是非常好的,但我不确定这是否可能?

希望stackoverflow的大量智能可以给我一些指示?

谢谢!

/ Thomas Kahn PS.我在C#中编码.

c# asp.net validationsummary login-control

6
推荐指数
1
解决办法
7242
查看次数

使用TryUpdateModel绑定时,MVC ValidationSummary忽略模型级验证错误

这是一个与已发布的问题非常相似的问题:ASP.NET MVC:在TryUpdateModel中设置的验证消息未显示ValidationSummary

我不确定那个旧主题是否参考了早期版本的MVC,但在MVC3中,我遇到了类似行的奇怪行为.

我有一个名为Trade的模型类.它继承自IValidatableObject,因此实现了Validate方法.在此范围内,我们对模型进行了整体验证(与强制验证属性的数据注释相对).验证如下:

public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
  {
     var validationResults = new List<ValidationResult>();

     if (this.EndDate < this.StartDate)
     {
        validationResults.Add(new ValidationResult("End date must be greater than start date"));
     }

     return validationResults;
  }
Run Code Online (Sandbox Code Playgroud)

我们有一个视图模型来帮助显示交易.这包含通过TradeModel属性对交易模型的引用.所以基本上,视图模型是一个交易模型,加上一些额外的信息,用于下拉列表的比例,例如交易对手等.

我们的CSHTML类包含一个ValidationSummary,其中"true"作为参数,这意味着它只显示模型错误.

如果我实现我的HttpPost控制器方法来创建一个新的贸易如下...

  [HttpPost]
  public ActionResult Create(FormCollection collection)
  {
     var trade = new Trade();

     if (this.TryUpdateModel(trade))
     {
        if (this.SaveChanges(this.ModelState, trade))
        {
           return this.RedirectToAction("Index");
        }
     }

     return this.View(trade);
  }
Run Code Online (Sandbox Code Playgroud)

...当我使用StartDate> EndDate进行交易时,我发现TryUpdateModel返回false并且用户被定向回他们的交易.这看似合乎逻辑.不幸的是ValidationSummary没有显示任何错误消息.

如果我在Create方法中放置一个断点并调查ModelState,我可以看到字典中有一条错误消息.它违反了"TradeModel"的密钥,而不是针对任何属性.再次,这似乎合乎逻辑.

关于其原因的一个理论是ValidationSummary假定针对非String.Empty的键的任何验证错误必须是属性验证错误,它忽略了我们的验证错误,因为我们有一个包含对模型的引用的视图模型,因此导致Key成为"TradeModel".

这个理论脱离水的原因是:如果我重写控制器的Create函数如下......

  [HttpPost]
  public ActionResult Create(Trade trade, FormCollection collection)
  {
     if (this.SaveChanges(this.ModelState, trade))
     {
        return this.RedirectToAction("Index"); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net validationsummary asp.net-mvc-3

6
推荐指数
1
解决办法
3350
查看次数

mvc3 ValidationSummary排除属性错误IValidatableObject

我的模型(A类)有一个B类属性(称为b)并已IValidatableObject实现.

视图已经有了 @Html.ValidationSummary(true)

在验证摘要中,我想排除与属性相关的错误.在B类IValidatableObject实现中返回ValidationResult没有memberNames

但是IValidatableObject由于B类是A类的属性,因此不会显示B类的Valiadtion错误

如何显示B类非属性验证错误?

c# validationsummary asp.net-mvc-3

5
推荐指数
1
解决办法
7540
查看次数

两个ValidationSummary在同一页面中

我在页面上有两个表单,每个表单都有自己的表单ValidationSummary.问题是,然后one formboth ValidationSummary显示验证消息执行服务器端验证.是否可以ValidationSummary在同一页面上有两个并ValidationSummary为其分配的每个表单执行?

validationsummary asp.net-mvc-3

5
推荐指数
1
解决办法
1791
查看次数

@ Html.ValidationSummary()在Ajax.BeginForm中不起作用

@Html.ValidationSummary()Ajax.BeginForm表单中使用是否有任何问题?

我有以下场景,我无法获得必填字段的验证.表单刚刚发布,也没有错误.

这是视图:

@using (Ajax.BeginForm("Register", "Account", new AjaxOptions { HttpMethod = "POST", OnSuccess = "closeDialog('RegistroUsuario')" }))
{
   @Html.ValidationSummary() 
   <fieldset>
        <legend>Cadastro novo Usuário</legend>
       <table id="changePassword">
                <tr>
                    <td class="smallField">Username:</td>
                    <td>@Html.TextBoxFor(m => m.UserName)</td>
                </tr>
                <tr>
                    <td>Password:</td>
                    <td>@Html.PasswordFor(m => m.Password)</td>
                </tr>
                <tr>
                    <td>Repetir Senha:</td>
                    <td>@Html.PasswordFor(m => m.ConfirmPassword)</td>
                </tr>
                <tr>
                    <td>Email:</td>
                    <td>@Html.TextBoxFor(m => m.Email)</td>
                </tr>
                <tr>
                    <td>Pergunta Secreta:</td>
                    <td>@Html.TextBoxFor(m => m.SecretQuestion)</td>
                </tr>
                               <tr>
                    <td>Resposta:</td>
                    <td>@Html.TextBoxFor(m => m.SecretQuestionPassword)</td>
                </tr>
                <tr>
                    <td>Ativo:</td>
                    <td><input type="checkbox" name="status" id="status" value="Ativo"></td>
                </tr>    
            </table>           
    </fieldset>
    <input type="submit" value="Criar Usuário" …
Run Code Online (Sandbox Code Playgroud)

validationsummary ajax.beginform asp.net-mvc-4

5
推荐指数
1
解决办法
8822
查看次数

在 CSP 样式-src 中不尊重 Sha 哈希

我有一个使用asp-validation-summary. 因此,内联style被添加到我页面中的 HTML 元素中。

当我运行我的应用程序时,这在控制台(Chrome v78.0.3904.108)中给了我以下错误:

拒绝应用内联样式,因为它违反了以下内容安全策略指令:“style-src 'self' https://fonts.googleapis.com ”。启用内联执行需要“unsafe-inline”关键字、哈希(“sha256-aqNNdDLnnrDOnTNdkJpYlAxKVJtLt9CtFLklmInuUAE=')或随机数(“nonce-...”)。

所以我将哈希添加到我的 CSP 中,现在看起来像这样:

style-src 'self' https://fonts.googleapis.com 'sha256-aqNNdDLnnrDOnTNdkJpYlAxKVJtLt9CtFLklmInuUAE=';
Run Code Online (Sandbox Code Playgroud)

当我加载我的页面时,我仍然收到类似的错误:

拒绝应用内联样式,因为它违反了以下内容安全策略指令:“style-src 'self' https://fonts.googleapis.com 'sha256-aqNNdDLnnrDOnTNdkJpYlAxKVJtLt9CtFLklmInuUAE='”。启用内联执行需要“unsafe-inline”关键字、哈希(“sha256-aqNNdDLnnrDOnTNdkJpYlAxKVJtLt9CtFLklmInuUAE=')或随机数(“nonce-...”)。

这是整个 CSP 标头:

X-Content-Security-Policy: default-src 'self'; object-src 'none'; frame-ancestors 'none'; sandbox allow-forms allow-same-origin allow-scripts; base-uri 'self'; upgrade-insecure-requests; style-src 'self' https://fonts.googleapis.com 'sha256-aqNNdDLnnrDOnTNdkJpYlAxKVJtLt9CtFLklmInuUAE='; font-src 'self' https://fonts.gstatic.com;
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我已经添加了哈希,正如错误中所暗示的那样。它似乎也是一个有效的 header

但为什么这不起作用?

validationsummary content-security-policy

5
推荐指数
1
解决办法
1506
查看次数

在ASP.NET MVC 2中自定义ValidationSummary

我想在ASP.NET MVC 2中自定义ValidationSummary的html输出

<div class="validation-summary-errors">
    <span>Oops! validation was failed because:</span>
    <ul>
        <li>The Title field is required.</li>
        <li>The Body field is required.</li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

<div class="validation-error">
    <p>Oops! validation was failed because:</p>
    <ul>
        <li>The Title field is required.</li>
        <li>The Body field is required.</li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

asp.net MVC 2有什么新方法可以解决这个问题吗?

validationsummary asp.net-mvc-2

4
推荐指数
1
解决办法
4977
查看次数

自定义验证器触发,但它不更新ValidationSummary

嗨我正在使用自定义表单字段验证器,似乎自定义验证器正在工作,不允许它继续到下一页,但它不更新验证摘要也不显示星号和标签,我已经变得可见了.我还在同一个字段上有其他验证器,如RequiredFieldValidator.设置了我的ValidationGroup,Text和IsValid也是如此.我甚至在javascript中编写并设置了一个虚拟客户端验证方法,正如一些解决方法所暗示的那样.

这是asp.net中的验证摘要代码

<asp:ValidationSummary ID="ValidatorSummary" runat="server" ValidationGroup="Step2" />
Run Code Online (Sandbox Code Playgroud)

这是自定义验证器和必填字段

<asp:CustomValidator ID="AddressVerification" runat="server" ErrorMessage="Please enter a valid address." Display="Dynamic" ValidationGroup="Step2" OnServerValidate="AddressVerification_ServerValidate" ClientValidationFunction="CustomValidatorDummy" Text="*" Enabled="true" EnableClientScript="true"></asp:CustomValidator>
<asp:RequiredFieldValidator ID="RFValidatorHomeAddress" runat="server" ErrorMessage="Please enter home address." Text="*" Display="Dynamic" ValidationGroup="Step2" ControlToValidate="txtHomeAddress"></asp:RequiredFieldValidator>
Run Code Online (Sandbox Code Playgroud)

这是后面代码中的自定义验证方法

protected void AddressVerification_ServerValidate(object sender, ServerValidateEventArgs e)
{
//lets just say it doesn't validate and sets the IsValid to false
lblUspsValidatorResHomeCity.Visible = true;
lblUspsValidatorResHomeState.Visible = true;
lblUspsValidatorResHomeZip.Visible = true;
e.IsValid = false;
}
Run Code Online (Sandbox Code Playgroud)

请指教,谢谢.

编辑:回答 - 按照bitxwise提到.验证摘要也应放在更新面板中.谢谢!

像这样:

<asp:UpdatePanel ID="UpdatePanelValidationSummaryHome" ChildrenAsTriggers="false" UpdateMode="Conditional"
runat="server">
<ContentTemplate>
    <asp:ValidationSummary ID="AddressHomeValidationSummary" …
Run Code Online (Sandbox Code Playgroud)

c# asp.net validation customvalidator validationsummary

3
推荐指数
1
解决办法
2万
查看次数

如何在验证摘要中、验证消息前面获取错误字段的 ID

有没有办法自定义validationSummary,以便它可以输出锚标记,其HREF是摘要中验证消息显示的字段的名称?这样,使用 jquery,我可以添加 onclick 事件,当在验证摘要上单击锚标记时,这些事件会聚焦于该字段。

这主要针对视障人士,这样当他们出现错误时,验证摘要会聚焦,他们会选择错误条目,带有字段标签的锚点标签会聚焦,屏幕阅读器会先读取锚点,然后读取消息,然后他们可以单击聚焦在错误的字段上。

<a href="#First_Name">名字</a> - 请输入您的名字。

谢谢。

asp.net-mvc validationsummary c#-2.0

3
推荐指数
1
解决办法
884
查看次数

如何在验证摘要中添加图像以及错误消息?

我想在验证摘要中显示带有成功图像(绿色勾号)和失败图像(红色警告)的错误消息.这该怎么做.和我验证摘要我将不得不显示一些粗体,斜体等文本,因为我试图传递这样的字符串.

inValid <b>username</b> or <b>password</b>
Run Code Online (Sandbox Code Playgroud)

但在页面中它的渲染就是这样.它没有以粗体显示用户名和密码.有没有办法做到这一点.我在控制器中收到此验证错误消息并将其添加到ModelState.add(错误);

asp.net-mvc validationsummary modelstate

3
推荐指数
1
解决办法
2472
查看次数

ValidationSummary显示重复的消息

如果两个文本框一次验证失败,则ValidationSummary会两次显示相同的消息.

难道我做错了什么?或者是否有一个设置我可以更改以隐藏重复的消息?

 

我把它分解为最简单的例子:

视图:

@model MyModel
@Html.ValidationSummary()
@Html.TextBoxFor(model => model.A)
@Html.TextBoxFor(model => model.B)
Run Code Online (Sandbox Code Playgroud)

模型:

public class MyModel : IValidatableObject
{
    public int A { get; set; }
    public int B { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        //Some logic goes here.        
        yield return new ValidationResult("Validation failed", new[] { "A", "B" });
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述

asp.net-mvc validationsummary

3
推荐指数
1
解决办法
8083
查看次数