相关疑难解决方法(0)

ASP.NET MVC:ValidationAttribute和本地化的ErrorMessage

我有ValidationAttribute像:

    public class Username : ValidationAttribute
 {
  public override bool IsValid(object value)
  {
   if (value == null)
    return false;

   return RegExp.Validate(RegExpLib.Username,value.ToString());
  }
 }
Run Code Online (Sandbox Code Playgroud)

..并使用它像这样:

    public class AccountSignIn
 {
  [Username(ErrorMessageResourceName ="txtUsername",ErrorMessageResourceType=typeof(SignIn))]
  public string Username { get; set; }

  public string Password { get; set; }

  public bool RememberMe { get; set; }

  public string ReturnUrl { get; set; }
 }
Run Code Online (Sandbox Code Playgroud)

SignIn是App_GlobalResources的资源文件,"txtUsername" - 是资源文件中的字符串名称.

问题:未显示错误消息.

问题:如果网站上的语言很少,如何设置错误消息.

另一个信息:

我可以SignIn.txtUsername从Views或项目中的任何文件访问.来自控制器

ModelState.AddModelError("Username", Resources.SignIn.txtUsername);
Run Code Online (Sandbox Code Playgroud)

工作正常..我可以在ValidationAttribute内部分配ErrorMessage,但在第二次验证后得到错误尝试...如果我这样检查 -

   if(ErrorMessage != Resources.SignIn.txtUsername)
       ErrorMessage = Resources.SignIn.txtUsername; 
Run Code Online (Sandbox Code Playgroud)

切换到另一种语言后出错 - …

asp.net-mvc

7
推荐指数
2
解决办法
9967
查看次数

为什么WebApi将空字符串标记为模型状态中的错误?

我有Web API的奇怪行为,.Net 4.5.2.如果可选字符串参数为null,则ModelState没有错误.如果它不为空且不为空,则不会再出现错误.但如果它只是一个空字符串我有模型状态错误.

为什么我得到它以及如何禁用它?

假设应用程序服务localhost:82我有这些结果:

Url: http://localhost:82/
Response: "null"

Url: http://localhost:82/?q=1
Response: "1"

Url: http://localhost:82/?q=
Response: {
  "Message": "The request is invalid.",
  "ModelState": {
    "q.String": [
      "A value is required but was not present in the request."
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

测试控制器和配置如下.在VS2013中,这被简化为"WebApi"的默认"Asp.net Web应用程序".

namespace Web.Api.Test.Controllers
{
    using System.Web.Http;

    [Route]
    public class HomeController : ApiController
    {
        [Route]
        [HttpGet]
        public IHttpActionResult Search(string q = default(string))
        {
            return this.ModelState.IsValid
                ? this.Ok(q ?? "null")
                : (IHttpActionResult)this.BadRequest(this.ModelState);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Startup.cs是:

using Microsoft.Owin;

using …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api

7
推荐指数
2
解决办法
4914
查看次数

全局本地化验证

我正在使用System.ComponeneModel.DataAnnotations属性,例如Required和StringLength.是否可以全局本地化其错误消息?

我知道我能做到这一点

[Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.Validation))]
Run Code Online (Sandbox Code Playgroud)

但到处都这样,我使用必需的属性将是疯狂的.另外我想避免像这样的东西:

public class LocalizedRequiredAttribute : RequiredAttribute {
    public LocalizedRequiredAttribute()
        : base() {
        ErrorMessageResourceName = "Required";
        ErrorMessageResourceType = typeof(Resources.Validation);
    }
}
Run Code Online (Sandbox Code Playgroud)

(但如果没有其他办法,我会满足于此)

validation attributes localization data-annotations asp.net-mvc-3

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

asp.net MVC3 DefaultModelBinder错误消息键

stackoverflow和其他网站上有很多关于翻译DefaultModelBinder提供的默认错误消息的问题(和答案),例如这一个这个.

这些问题的所有答案基本上都是为了在App_GlobalResources下创建一个ressource(resx)文件,并为"PropertyValueInvalid"添加一条消息.

这很好,它确实有效,但还有其他消息(例如"值xxx必须是一个数字"),最大的问题是:在地狱中我可以有一个用于模型绑定验证的消息键列表,有他们用于的上下文的描述,所以我可以翻译它们中的每一个?

asp.net resources localization asp.net-mvc-3

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