我正在使用带有最小和最大属性集的 HTML5 日期类型输入。
<input class="AccordionLeft" data-val="true"
id="operationDate" max="2050-01-01" min="2014-09-02"
name="OpDate" type="date" value="">
Run Code Online (Sandbox Code Playgroud)
当我在最小日期之前输入一个日期时,我会从内置验证器收到 jquery 验证消息。我想定制这个。我们已经创建了几个自定义规则(通过自定义数据注释)并且对于我们的 custrom 验证规则,设置错误消息很简单。
内置验证器有这样的东西吗?
jquery jquery-validate unobtrusive-validation asp.net-mvc-5.1
我有一个复选框列表,我想在客户端使用 jQuery 验证但失败。我已经在我的项目中添加了不显眼的 jquery 验证插件。
型号代码为:
[Required]
public string name { get; set; }
[SkillValidation(ErrorMessage = "Select at least 3 skills")]
public List<CheckBox> skills { get; set; }
Run Code Online (Sandbox Code Playgroud)
和其他模型是:
public class CheckBox
{
//Value of checkbox
public int Value { get; set; }
//description of checkbox
public string Text { get; set; }
//whether the checkbox is selected or not
public bool IsChecked { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
说明 - SkillValidation() 是我创建的用于进行服务器端验证的自定义属性。
SkillValidation 类代码是:
public class SkillValidation : ValidationAttribute
{ …Run Code Online (Sandbox Code Playgroud) 我在我的代码中添加了一个自定义验证属性,它在服务器端工作得很好。但是,在客户端,方法和适配器已注册,但从未调用验证函数。
我正在使用 MVC 在 .NET Core 2.2 中工作。我已经按照其他地方的建议删除了 $(Document).Ready 包装器,并验证了所有的大小写匹配。
下面是一个MRE
测试验证属性:
public class TestValidationAttribute : ValidationAttribute, IClientModelValidator
{
public TestValidationAttribute(string name)
{
_name = name;
}
private string _name;
protected override ValidationResult IsValid(Object value, ValidationContext validationContext)
{
return new ValidationResult($"{_name} has been validated");
}
void IClientModelValidator.AddValidation(ClientModelValidationContext context)
{
context.Attributes.Add("data-val", "true");
context.Attributes.Add("data-val-testvalidation", $"{_name} has been validated client side");
context.Attributes.Add("data-val-testvalidation-name", _name);
}
}
Run Code Online (Sandbox Code Playgroud)
该模型:
public class TestModel
{
[TestValidation("Hello World!")]
[Display(Name = "Test Value")]
public string TestValue { get; set; } …Run Code Online (Sandbox Code Playgroud) 我们有一个ASP.NET MVC 3应用程序,它使用不显眼的jQuery验证.该页面允许在同一个go中将子对象添加到模型中.在<form>包含孩子的网格,并增加新的孩子一些输入字段.
将问题作为模型和子任务作为子项的简化示例:
Issue.cshtml - >定义表单并包含问题的字段及其子任务.
@model Issue
@using (Html.BeginForm("Create", "Issues", FormMethod.Post, new { id = "mainForm" })
{
@Html.TextBoxFor(model => model.Summary)
@Html.Partial("SubtaskFields", new Subtask())
@Html.Partial("SubtasksGrid", model.Subtasks)
}
Run Code Online (Sandbox Code Playgroud)
SubtaskFields.cshtml:
@model Subtask
@Html.TextBoxFor(model => model.Summary)
<button id="add">Add</button>
Run Code Online (Sandbox Code Playgroud)
SubtasksGrid.cshtml:
@model IEnumerable<Subtask>
<table>
@foreach (var subtask in Model)
{
<tr>
<td>
@subtask.Name
<input type="hidden" name="Subtasks[@subtask.Index].Name" value="@subtask.Name"/>
</td>
</tr>
}
</table>
Run Code Online (Sandbox Code Playgroud)
关键是,在提交表单时,只应验证和提交问题的属性(例如,Issue.Name),以及子项的隐藏字段(例如Subtask.Name).
我们有一些挂钩"添加"按钮的javascript代码,并根据SubtaskFields.cshtml局部视图中的值添加一个新的子任务.该脚本首先验证输入字段.为了使它能够工作,我们也使用了TextBoxFor用于SubtaskFields.cshtml的等html助手,渲染了一个虚拟/默认的子任务对象(new Subtask()).我们的javascript用于$("#mainForm").validate().element(...)在添加新子任务之前验证SubtaskFields.
这种方法的一个大问题是jQuery不显眼的验证框架会自动挂钩提交按钮并在提交表单之前验证表单中的所有字段.即,即使是子任务字段也经过验证.这没有任何意义.假设子任务名称是必需的(这意味着用户只有在填写了子任务名称时才能单击"添加").但是,如果用户没有单击"添加",则子任务字段中的值没有任何意义,尤其可以留空.在这种情况下,在我们当前的设置中, …
更新2:
jQuery版本兼容性问题.
更新1:
我的脚本参考中有一个拼写错误.但是我现在遇到这个问题:
TypeError: $(...).live is not a function
$("a[data-ajax=true]").live("click", function (evt) {
Run Code Online (Sandbox Code Playgroud)
=====================================
当我通过ajax.beginform提交一个有效的表单时,在控制器中,它返回JSON,它显示在视图中而不是由回调函数处理,我无法弄清楚为什么会这样.
我从网上拿了一个演示项目,以防万一看起来很熟悉.
HTML/JS
@model Unobtrusive_Validation.Models.BlogPost
<html>
<head>
</head>
<body>
<script src="~/Scripts/jquery-1.9.1.js"></script>
<script src="~/Scripts/jquery.validate.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.js"></script>
<script src="~/Scripts/jquery.unobtrusive.ajax.js"></script>
@using (Ajax.BeginForm("Test", "BlogPost",
new AjaxOptions{
HttpMethod = "POST",
OnSuccess = "OnSuccess",
OnBegin = "alert('OnBegin')",
OnComplete = "alert('OnComplete')",
OnFailure = "alert('OnFailure')"
} )
)
{
@Html.ValidationSummary(true)
<fieldset>
<legend>BlogPost</legend>
<div class="editor-label">
@Html.LabelFor(model => model.PostedOn)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.PostedOn)
@Html.ValidationMessageFor(model => model.PostedOn)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Title)
</div> …Run Code Online (Sandbox Code Playgroud) 我在MVC4验证中遇到了问题.目前,我使用validationMessageFor来获取错误消息.它不是那么美丽所以我想改变我的验证.我想做图形验证.例如,我想在条目表单中验证电子邮件.如果电子邮件有效,我的文本框将如下所示.
如果电子邮件错误,我想向用户显示以下内容.

在MVC4中,它可以做到吗?我应该如何根据图片设计我的文本框?如何在文本框中添加刻度图标和十字图标以及信封图标?如果电子邮件格式错误,如何填充红色?
感谢任何帮助,谢谢
我不确定这是否可以通过Regex Edit Alone实现.我需要在我的MVC视图中验证整数字段值为10的倍数.这是通过单独的正则表达式和不引人注意的验证来实现的吗?
我MVC Foolproof validation在我的申请中使用.方案是我有一个名为CustomerType的下拉列表,其中包含以下值
Id Name
1 Student
2 Non-Employed
3 Employed
4 SelfEmployed
Run Code Online (Sandbox Code Playgroud)
我的视图模型中还有一个属性.public string CompanyAddress{ get; set; }我的目标是使CompanyAddress required if下拉列表具有值3 or 4
我尝试了以下内容
[Required(ErrorMessage = "Please select status of the customer", AllowEmptyStrings = false)]
public int? customerTypeID { get; set; }
public SelectList customerTypeList { get; set; }
[RequiredIf("IsCompanyAddressRequired", true, ErrorMessage = "please enter company address")]
public string CompanyAddress { get; set; }
public bool IsCompanyAddressRequired
{
get
{
if (customerTypeID == 3 …Run Code Online (Sandbox Code Playgroud) 我有两个页面,一个是主页面,第二个是 PartialView 页面,并使用 jquery get 方法在弹出窗口中显示
我的主页
@model CT.SmartQueue.Entity.QueueModel
@{
ViewBag.Title = "AdminPanel";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Queue Lists</h2>
<div class="col-lg-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>For Service Centre Only: </h5>
<div class="ibox-tools">
</div>
</div>
<div class="ibox-content">
<table class="table table-striped">
<tr>
<th>
Code
</th>
<th>
Name
</th>
<th>
Description
</th>
<th>
IsActive
</th>
<th>
Edit
</th>
</tr>
@foreach (var item in Model.ClientQueueModel)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Code)
</td>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
<td> …Run Code Online (Sandbox Code Playgroud) asp.net-mvc jquery jquery-validate razor unobtrusive-validation
我想在 MVC-6 RC2 中使用自定义 jquery 不显眼的验证器
与旧答案类似,我在This one 中看到了一些 RC2 示例,但我不知道如何为文件实现它。
这是我的查看模式
public class FileUploadViewModel
{
//TODO [FileType(Validtype="jpeg,png,jif", MaxSize=112222)]// this is what I want
[Required(ErrorMessage = "Please select a file")]
public IFormFile File { get; set; }
[Required(ErrorMessage = "Please select link")]
public string FileName { get; set; }
public string ExternalLink { get; set; }
public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud) asp.net-mvc unobtrusive-validation asp.net-core-mvc .net-core-rc2