Tag: unobtrusive validation

从生成db scema中禁用System.CompositionModel.DataAnnotation而不是仅用于不引人注意的jqueryvalidation

我想使用System.CompositionModel.DataAnnotation来构建Model,但它不应该影响数据库模式,例如,如果我使用Required那么它不应该使该列在数据库中不可为空。 我想使用Data注释的原因是用于MVC 4 JQuery Unobstrusivevalidation。 截至目前,我已通过使用validation @Html.TextBoxFor(model => model.BookingRequest.Email, new { data_val = “true”, data_val_required = “Please provide Special Notes” }) 我认为这不是执行validation的最佳实践或标准方法。 我想把我的模型改成这样的东西。 [Required] public string Email { get; set; } public string CustomerName { get; set; } public string ContactNumber { get; set; } 所以我不需要在TextAreaFor中生成html元素时传递html属性,但在数据库中它应该是可空的。 我这样做的原因是有另一个服务使用相同的上下文但它不提供电子邮件值。 而且我不想改变已经运行的服务。 我使用EntityTypeConfigurtaion(Fluent API)而不是DataAnnotation来配置模型。 在此先感谢您抽出时间来审核我的问题。

全局覆盖ASP.Net MVC默认属性错误消息

如何使用来自不同程序集的资源来覆盖MVC5应用程序中的默认属性错误消息? 我的网站是命名空间:Company.Web 我的资源程序集是命名空间:Company.Web.Resources 我可以使用以下方法单独本地化属性错误消息: [Required(ErrorMessageResourceName = “PropertyValueRequired”, ErrorMessageResourceType = typeof(Company.Web.Resources.Messages))] 但是,由于我们的错误消息始终为“必需”,因此我只想放置[Required]属性而无需指定资源名称。 我还想覆盖MVC输出的默认数据类型消息,这是通过属性无法完成的。 字段{0}必须是日期。 我想成为 失效日期 我已经看到了一些示例,您可以将资源文件放在App_GlobalResources中(使用键PropertyValueRequired , FieldMustBeDate , FieldMustBeNumeric )并设置ClientDataTypeModelValidatorProvider.ResourceClassKey ,但我已经有了一个我想要使用的外部资源程序集。 我尝试在我的Global.asax中使用以下内容而没有运气: ClientDataTypeModelValidatorProvider.ResourceClassKey = “Company.Web.Resources.Messages” 我怎么能做到这一点? 有任何想法吗? 更新(部分解决) 我可以简单地通过创建新的validation适配器并使用它们来代替默认值来解决基于属性的问题: public class MyRequiredAttributeAdapter : RequiredAttributeAdapter { public MyRequiredAttributeAdapter(ModelMetadata metadata, ControllerContext context, RequiredAttribute attribute) : base(metadata, context, attribute) { if (attribute.ErrorMessage.IsNullOrWhitespace() && attribute.ErrorMessageResourceName.IsNullOrWhitespace() && attribute.ErrorMessageResourceType == […]

如何使用Foolproof的ModelAwareValidationAttribute进行不显眼的客户端validation

我正在尝试使用MVC Foolproofvalidation框架( http://foolproof.codeplex.com/ )但我遇到了ModelAwareValidationAttribute类的问题。 当我添加自定义validation属性时,它适用于服务器端模型validation,但不适用于客户端。 如果我使用框架提供的内置属性之一,客户端不显眼的validation工作,所以我知道(或者至少我认为我知道)我已经加载了正确的javascript库。 有没有人使用此框架创建自定义validation属性,它是否与客户端不显眼的validation一起使用? 如果是这样,你做了什么让它工作? 我正在使用Asp.Net MVC 3,以防万一。

asp.net mvc客户端validation不起作用?

出于某种原因,我的客户端validation似乎不起作用: 这是我的HTML: @using (Html.BeginForm(“Create”, “Home”, FormMethod.Post)) { @Html.ValidationSummary(true) Select Client_ID: @foreach (var item in Model.ClientId) { @item } @Html.LabelFor(model => model.UserModel.name) @Html.EditorFor(model => model.UserModel.name) @Html.ValidationMessageFor(model => model.UserModel.name) @Html.LabelFor(model => model.UserModel.password) @**@ @Html.EditorFor(model => model.UserModel.password) @Html.ValidationMessageFor(model => model.UserModel.password) @Html.LabelFor(model => model.UserModel.email) @**@ @Html.EditorFor(model => model.UserModel.email) @Html.ValidationMessageFor(model => model.UserModel.email) Select: Company End-User 这是我的模型: public class CreateUserModel { […]

如何使用Html.GetUnobtrusiveValidationAttributes()

我试图解决这样一个事实:当他们编写asp.net MVC 3时,他们忘记包含代码来添加不显眼的validation属性到选择列表,他们的“修复”就是将它包含在MVC 4中,这不是血腥的使用MVC 3的任何人。 我提议的工作是使用Html.GetUnobtrusiveValidationAttributes()来自己添加它们,就像任何其他自定义属性一样,但我无法确定调用该方法的正确语法。 有2个重载,一个接受一个字符串,另一个接受一个字符串和一个ModelMetaData类。 我理解元数据参数,我认为我只是传入ViewData.ModelMetadata但该字符串应该是什么? MSDN文档说它是“指定的HTML名称属性”,这对我来说毫无意义。 HTML名称属性是什么? 选择清单? 为什么它需要它,以及它如何帮助它知道我的模型上我想要validation的属性? 查看使用示例,他们似乎都在我的模型上的属性名称中传递,我想要validation属性,这是有道理的。 不幸的是,无论我传递什么,我都无法让方法返回任何空集合。 我的模型类叫做Event,我的属性叫做EventTypeID。 我使用稍微不同的viewmodel类作为视图的基础,因为我需要显示事件列表,并且还允许在同一视图上输入新事件,所以我有一个简单的viewmodel类,如下所示: public class EventViewModel { public Model.Event NewEvent { get; set; } public IEnumerable Events { get; set; } } 下拉列表映射到属性,如: @Html.DropDownListFor(model => model.NewEvent.EventTypeID ,我将什么作为字符串传递给Html.GetUnobtrusiveValidationAttributes(string)或Html.GetUnobtrusiveValidationAttributes(string, ModelMetadata)来获取属性对于这个属性。我试过: Html.GetUnobtrusiveValidationAttributes(“EventTypeID”) Html.GetUnobtrusiveValidationAttributes(“EventTypeID”,ViewData.ModelMetadata) Html.GetUnobtrusiveValidationAttributes(“NewEvent.EventTypeID”) Html.GetUnobtrusiveValidationAttributes(“NewEvent.EventTypeID”,ModelMetadata) 他们都返回一个空集合。 我知道我的模型是正确的,因为如果我将调用从Html.DropDownListFor更改为Html.TextBoxFor然后validation“正常工作”,除了将validation属性添加到我的模型类之外我不必做任何事情。 编辑: 只是尝试关闭客户端validation,validation在所有选择列表的服务器端工作正常。

将多个属性的组validation消息一起组成一个消息asp.net mvc

我有一个视图模型,其中包含某人出生日期的年/月/日属性。 所有这些字段都是必需的。 现在,如果有人在出生日期没有输入任何内容,则会收到3条单独的错误消息。 我想要做的是以某种方式将这些错误消息组合成一条消息,该消息只是说“出生日期是必需的”。 因此,如果这些字段中的一个或多个是空白的,它们将始终只获得1个validation消息。 我需要通过jqueryvalidation和不引人注意的validation来处理客户端validation。 我知道通过查看这个问题可以使用jquery validate插件。 但是我不知道如何使用我的模型上的validation属性和不显眼的validation来实现asp.net mvc。 希望有一些内置的方法可以将属性分组以进行validation,但如果没有,可以使用自定义validation属性吗? 这是我现有的模型和视图的样子: 该模型: public class MyModel { [Required(ErrorMessage = “Year is required”)] public int Year { get; set; } [Required(ErrorMessage = “Month is required”)] public int Month { get; set; } [Required(ErrorMessage = “Day is required”)] public int Day { get; set; } } 风景: […]

使用无效变量名称的jQueryvalidation远程:如何修复?

我正在使用jQuery Validation进行远程validation。 我试图在MVC中调用我的服务器端代码,但问题是我的变量是在嵌套类中: public class Customer { public State HouseState {get;set;} } public class State { public string Name {get;set;} } 在我的* .cshtml中我有这个: @Html.TextBoxFor(m => m.HouseState.Name, new { placeholder = “State Name”}) 我正在添加validation: $.validator.addMethod(“verify”, verify); $(‘#HouseState_Name’).rules(‘add’, { verify: true, remote: ‘@Url.Content(“~/Home/Validate”)’, messages: { verify: “No!” } }); 在这种情况下,它将生成如下的GET请求: http://localhost/Home/Validate?HouseState.Name=CA 问题是它希望我的服务器中的变量是House.Name是C#中无效的变量名。 有没有办法在客户端中自定义此变量或为服务器中的变量创建别名? 我已经尝试过使用FormCollection并且它有效,但远非完美。 public JsonResult Validate(FormCollection […]