gpt4 book ai didi

c# - 验证消息包含 '{PropertyName}' 而不是属性名称

转载 作者:行者123 更新时间:2023-11-30 12:16:40 24 4
gpt4 key购买 nike

我使用流式验证和客户端非侵入式验证。

 <fieldset class="edit-root-form">
<p>
@Html.LabelFor(model => model.Login, UserRes.Login)
@Html.TextBoxFor(model => model.Login)
@Html.ValidationMessageFor(model => model.Login)
</p>
</fieldset>

流畅的验证规则:

 this.RuleFor(x => x.Login).NotNull().EmailAddress()

我收到这样的错误消息:“{PropertyName}”不能为空。

生成的 html:

<input data-val="true" data-val-regex="&amp;#39;{PropertyName}&amp;#39; is not a valid
email address." data-val-required="&amp;#39;{PropertyName}&amp;#39; must not be
empty." id="Login" name="Login" type="text" value="" class="input-validation-error">

为什么 MVC 不替换 PropertyName 真实字段名?

最佳答案

对我来说效果很好。我正在使用最新的 FluentValidation 版本 (2.0.0.0) 和 ASP.NET MVC 3 RTM。

模型和验证器:

[Validator(typeof(MyViewModelValidator))]
public class MyViewModel
{
public string Login { get; set; }
}

public class MyViewModelValidator : AbstractValidator<MyViewModel>
{
public MyViewModelValidator()
{
RuleFor(x => x.Login).NotNull().EmailAddress();
}
}

Controller :

public class HomeController : Controller
{
public ActionResult Index()
{
return View(new MyViewModel());
}

[HttpPost]
public ActionResult Index(MyViewModel model)
{
return View(model);
}
}

查看:

@model AppName.Models.MyViewModel
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
@using (Html.BeginForm())
{
@Html.LabelFor(model => model.Login, "Login")
@Html.TextBoxFor(model => model.Login)
@Html.ValidationMessageFor(model => model.Login)
<input type="submit" value="OK" />
}
Global.asax 中的

Application_Start:

protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();

RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
ModelValidatorProviders.Providers.Add(new FluentValidationModelValidatorProvider(new AttributedValidatorFactory()));
}

两种情况:

  1. 将文本框留空:'Login' 不能为空。 显示验证错误消息。
  2. 输入无效的电子邮件:“登录”不是有效的电子邮件地址。显示验证错误消息。

最后是为文本框生成的 HTML:

<input data-val="true" data-val-regex="&amp;#39;Login&amp;#39; is not a valid email address." data-val-regex-pattern="^(?:[\w\!\#\$\%\&amp;\&#39;\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&amp;\&#39;\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!\.)){0,61}[a-zA-Z0-9]?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$" data-val-required="&amp;#39;Login&amp;#39; must not be empty." id="Login" name="Login" type="text" value="" />

关于c# - 验证消息包含 '{PropertyName}' 而不是属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4849839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com