我在MVC3项目的页面上有一些动态插入的表单字段.通常我们会添加jQuery验证服务器端,但在这种情况下我们不能(UI中的多个字段生成一个隐藏字段的值 - 这就是提交的内容.我们无法验证隐藏字段,所以我们必须为用户可以看到的字段添加仅UI验证)
将字段动态添加到页面后,我在容器上运行以下代码:
$container.find(".date").rules("add", {
required: true,
messages: {
required: "The date is required"
}
});
Run Code Online (Sandbox Code Playgroud)
但它不起作用!奇怪的是,禁用上面的代码,创建动态元素,然后在浏览器JS控制台中运行代码,但只显示默认验证消息.
我不知所措.有任何想法吗?
我正在使用jQuery Validation 1.9.0和不引人注目的插件
我想下载最新版本的Microsoft jQuery Unobtrusive Validation,但是我不喜欢使用NuGet,因为我无法告诉它在我的项目结构中安装软件包的位置.
Microsoft是否将这些文件托管在我可以直接访问的位置?
我正在使用标准的MVC3 Razor视图和不显眼的Javascript验证,@Html.ValidationSummary用于在表单的顶部显示它们.如果标准验证(类似的东西[Required])通过,我会运行一些非常自定义的客户端验证,当用户点击提交按钮时会激活该验证.(验证查看了许多表单元素,以确保已经检查了它们的正确集合等,因此它不像仅为单个字段创建新的自定义验证器那么简单).
我希望我在那里构建的可能错误显示在ValidationSummary列表中,但我无法弄清楚如何让错误消息出现在那里.
我正在使用Asp.net MVC 3和Twitter Bootstrap.我想要的是整合它们.对我来说最大的问题是形式.我正在使用它HtmlHelper并且它是一个问题,当涉及到验证时,我希望它生成这样的HTML:
<div class="control-group error">
<label for="field" class="control-label">OMG this label is so awesome: </label>
<div class="controls">
<input type="text" name="field" id="field" value="yeah" />
<span class="help-inline">Eventually some error :C</span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这是我的HtmlHelper代码:
@Html.LabelFor(x => x.Field)
@Html.EditorFor(x => x.Field)
@Html.ValidationMessagesFor(x => x.Field)
Run Code Online (Sandbox Code Playgroud)
问题是我希望只有在这个字段上确实存在错误时才设置最外层div的类错误.其他问题是我不知道如何强制使用span标记来处理错误.我可以在HtmlHelper中编写我的方法,但它会让我重新实现几乎所有的功能LabelFor,EditorFor并且ValidationMessageFor.有更简单的方法吗?那不引人注目的验证怎么样?
forms asp.net unobtrusive-validation asp.net-mvc-3 twitter-bootstrap
我试图在提到执行代码这篇文章.换句话说,我正试图在条款和条件复选框上实现不显眼的验证.如果用户未选中该复选框,则应将输入标记为无效.
这是服务器端Validator代码,我添加了:
/// <summary>
/// Validation attribute that demands that a boolean value must be true.
/// </summary>
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
public class MustBeTrueAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
return value != null && value is bool && (bool)value;
}
}
Run Code Online (Sandbox Code Playgroud)
这是模型
[MustBeTrue(ErrorMessage = "You must accept the terms and conditions")]
[DisplayName("Accept terms and conditions")]
public bool AcceptsTerms { get; set; }
Run Code Online (Sandbox Code Playgroud)
这是我的看法:
@Html.EditorFor(x => x.AcceptTermsAndConditions)
@Html.LabelFor(x => x.AcceptTermsAndConditions)
@Html.ValidationMessageFor(x …Run Code Online (Sandbox Code Playgroud) unobtrusive-javascript razor unobtrusive-validation asp.net-mvc-3
在试图找到两天的答案后,我在这里写这个问题.
基本上这是发生了什么.
我在viewmodel中有一个属性,如下所示
[Required(ErrorMessage = "Required Field")]
[Url(ErrorMessage="Please enter a valid url")]
[DisplayName("Website")]
public string web { get; set; }
Run Code Online (Sandbox Code Playgroud)
在视图中,我有这个
@Html.EditorFor(model => model.web, new { AutoCompleteType = "Disabled", autocomplete = "off" })
Run Code Online (Sandbox Code Playgroud)
现在的问题在于如何在客户端验证此字段的输入文本.该字段必须始终具有协议前缀,否则将变为无效.
我能解决这个问题的最佳方法是什么?
非常感谢
unobtrusive-validation asp.net-mvc-4 jquery-validation-engine
在其中一个项目中,我需要重新安装jQuery NuGet包(一个MVC解决方案).
还有一个"Microsoft.jQuery.Unobtrusive.Validation",我应该在删除jQuery包之前卸载它.
现在我尝试(重新)安装jQuery包,以及之前删除的所有依赖包."Microsoft.jQuery.Unobtrusive.Validation"包打破说:
试图解决依赖'jQuery(≥1.8)'.
试图解决依赖'jQuery.Validation(≥1.8)'.
试图解决依赖'jQuery(≥1.3.2&&≤1.6)'.
将"jQuery 1.8.0"更新为"jQuery 1.4.1"失败.
无法找到与"jQuery 1.4.1"兼容的"Microsoft.jQuery.Unobtrusive.Validation"版本.
是吗?我需要使用最新的jQuery(2.0.xx)!
我应该此话的是,类似的"Microsoft.jQuery.Unobtrusive.阿贾克斯 "包没有这个"错误".安装没有问题.
PS.现在我尝试安装(非Microsoft)jQuery.Validation ...
这是错误日志:
试图解决依赖'Microsoft.jQuery.Unobtrusive.Validation(≥2.0.20613.0)'.
试图解决依赖'jQuery.Validation(≥1.8&& <2.0)'.
试图解决依赖'jQuery(≥1.3.2&&≤1.6)'.
安装'jQuery 1.4.1'.成功安装了'jQuery 1.4.1'.
安装'jQuery.Validation 1.8'.
成功安装了'jQuery.Validation 1.8'.
安装'Microsoft.jQuery.Unobtrusive.Validation 2.0.20710.0'.
成功安装了"Microsoft.jQuery.Unobtrusive.Validation 2.0.20710.0".
安装'jQuery.Validation.Unobtrusive 2.0.20710.0'.
成功安装'jQuery.Validation.Unobtrusive 2.0.20710.0'.
安装失败.
回滚......将
'jQuery 1.9.0'更新为'jQuery 1.4.1'失败了.无法找到与'jQuery 1.4.1'兼容的'bootstrap,jQuery.BlockUI,Microsoft.jQuery.Unobtrusive.Ajax'版本.
如果我[Required(AllowEmptyStrings = true)]在视图模型中有声明,则始终在空输入上触发验证.我发现这篇文章解释了它为什么会发生.你知道是否有修复方法吗?如果没有,你如何处理它?
validation unobtrusive-javascript jquery-validate unobtrusive-validation asp.net-mvc-3
@Scripts
<script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.js")"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")"></script>
Run Code Online (Sandbox Code Playgroud)
@视图
@using (Html.BeginForm("TestModelState", "RandD", FormMethod.Post, new {id="form123" }))
{
@Html.TextBoxFor(x => x.htmlText, new { style="display:none"})<br />
@Html.ValidationMessageFor(x => x.htmlText)
<div>
@Html.TextBoxFor(x => x.Uprop1)<br />
@Html.ValidationMessageFor(x => x.Uprop1)
</div>
<input type="submit" value-="Submit" onclick="abc()" />
}
Run Code Online (Sandbox Code Playgroud)
我尝试过什么
var validateMeta = $('#form123').validate(); validateMeta.settings.ignore ="";
$.validator.setDefaults({ignore: ""});
$.validator.setDefaults({ ignore: [] });
asp.net-mvc jquery jquery-validate unobtrusive-validation asp.net-mvc-4
我正在做类似于远程验证的事情,除了我已经通过jquery手动拨打我的电话并设置我必须设置的任何内容.
现在我的问题是,如果我想告诉验证器特定文本框无效(并阻止页面提交,突出显示文本框等).我怎么从代码中做到这一点?
@Html.LabelFor(m => Model.Slug)
@Html.TextBoxFor(m => Model.Slug)
<span id="UrlMsg" class="field-validation-error" style="display: none;"></span>
if (error) {
$('#UrlMsg').html('This name is already in use.').fadeIn('fast');
//what should I do here for the rest of the validation?
}
Run Code Online (Sandbox Code Playgroud) asp.net-mvc jquery jquery-validate unobtrusive-validation asp.net-mvc-3