我正在使用ASP.Net MVC3,更简单的方法来使用客户端验证将启用jquery.validate.unobtrusive.对于那些来自服务器的东西,一切正常.
但是当我尝试用javascript注入一些新的"输入"时,我知道我需要调用$.validator.unobtrusive.parse()来重新绑定验证.但是,所有这些动态注入的字段都不起作用.
更糟糕的是,我尝试手动绑定使用jquery.validate它也无法正常工作.有什么想法吗?
我在尝试使用不显眼的jquery验证来处理通过AJAX调用动态加载的局部视图时遇到问题.
我花了几天时间试图让这段代码运转起来没有运气.
这是视图:
@model MvcApplication2.Models.test
@using (Html.BeginForm())
{
@Html.ValidationSummary(true);
<div id="res"></div>
<input id="submit" type="submit" value="submit" />
}
Run Code Online (Sandbox Code Playgroud)
部分视图:
@model MvcApplication2.Models.test
@Html.TextAreaFor(m => m.MyProperty);
@Html.ValidationMessageFor(m => m.MyProperty);
<script type="text/javascript" >
$.validator.unobtrusive.parse(document);
</script>
Run Code Online (Sandbox Code Playgroud)
该模型:
public class test
{
[Required(ErrorMessage= "required field")]
public int MyProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
控制者:
public ActionResult GetView()
{
return PartialView("Test");
}
Run Code Online (Sandbox Code Playgroud)
最后,javascript:
$(doument).ready(function () {
$.ajax({
url: '/test/getview',
success: function (res) {
$("#res").html(res);
$.validator.unobtrusive.parse($("#res"));
}
});
$("#submit").click(function () {
if ($("form").valid()) {
alert('valid');
return true;
} …Run Code Online (Sandbox Code Playgroud) 如果某个字段中的值大于0,我希望能够只允许表单提交.我想可能Mvc Range属性允许我只输入1个值来表示只有大于测试,但是没有运气,因为它坚持最小和最大值.
任何想法如何实现这一目标?
假设这个模型:
Public Class Detail
...
<DisplayName("Custom DisplayName")>
<Required(ErrorMessage:="Custom ErrorMessage")>
Public Property PercentChange As Integer
...
end class
Run Code Online (Sandbox Code Playgroud)
和观点:
@Html.TextBoxFor(Function(m) m.PercentChange)
Run Code Online (Sandbox Code Playgroud)
将继续这个HTML:
<input data-val="true"
data-val-number="The field 'Custom DisplayName' must be a number."
data-val-required="Custom ErrorMessage"
id="PercentChange"
name="PercentChange" type="text" value="0" />
Run Code Online (Sandbox Code Playgroud)
我想自定义data-val-number我猜测生成的错误消息,因为它PercentChange是一个Integer.我正在寻找这样一个属性来改变它,range或者任何相关的不起作用.
我知道有可能编辑不显眼的js文件本身或在客户端覆盖它.我想像data-val-number服务器端的其他人一样更改错误消息.
validation asp.net-mvc localization unobtrusive-validation asp.net-mvc-3
我使用Visual Studio 2012中的模板创建了一个新的ASP.Net MVC 4项目.升级到jQuery 1.9后,登录功能中断.具体来说,我得到了错误
0x800a138f - JavaScript运行时错误:无法获取未定义或空引用的属性"调用"
在第1172行,jquery.validate.js中的第5列
我该如何解决这个问题?
任何人都可以告诉我为什么客户端验证不适用于我的MVC 4应用程序.
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
Run Code Online (Sandbox Code Playgroud)
在我的web.config中,我有:
<appSettings>
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
在我的login.cshtml页面中,我有:
@using (Html.BeginForm())
{
<div class="formscontent">
<ol>
<li>
@Html.LabelFor(x => x.AgreementNumber)
<br />
@Html.TextBoxFor(x => x.AgreementNumber, new { size = "30" })
<br />
@Html.ValidationMessageFor(m => m.AgreementNumber)
<br />
<br />
</li>
<li>
@Html.LabelFor(x => x.UserName)
<br />
@Html.TextBoxFor(x => x.UserName, new { size = "30" })
<br />
@Html.ValidationMessageFor(m => m.UserName)
<br />
<br />
</li>
<li>
@Html.LabelFor(x => x.Password)
<br …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用不同浏览器中使用日期选择器的最简单方案.我怀疑我做的事情非常简单,但是经过大量的搜索,我仍然没有找到解决方案.下面是一些代表我正在尝试的示例代码.
如果我使用Chrome(v12.0.742.122)并从选择器中选择日期,例如13/08/2011,即使我已明确指定格式为'dd/mm /,jQuery验证逻辑也不允许页面提交YY".
如果我将格式更改为'dd/M/yy'并选择类似13/Aug/2011的日期,则可以在Chrome中使用,但之后不会在IE中提交(v8.0.7600.16385).在FireFox(v3.6.18)中,两种格式都有效.
我需要哪些验证脚本才能支持Chrome中'dd/mm/yy'的日期格式?
<html>
<head>
<link rel="stylesheet" type="text/css" href="jquery-ui.css" />
<script type="text/javascript" src="jquery-1.4.4.js"></script>
<script type="text/javascript" src="jquery.validate.js"></script>
<script type="text/javascript" src="jquery.validate.unobtrusive.js"></script>
<script type="text/javascript" src="jquery-ui.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('.date').datepicker({ dateFormat: 'dd/mm/yy' });
$.validator.addMethod("dateRule", function(value, element) {
return true;
},
"Error message");
});
</script>
</head>
<body>
<form>
Date: <input type="text" name="myDate" class="date dateRule" />
<input type="submit" />
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) jquery jquery-ui datepicker jquery-validate unobtrusive-validation
编辑 - 我们正在使用MVC4开发预览....
我正在为一个FishingTrip类实现一个编辑页面. FishingTrip包含简单Crew对象的子集合(即FishingTripID,CrewID,CrewPosition).
我正在使用Jarrett Meyer的方法来添加,编辑和删除Crew集合.我正在使用不显眼的验证来指定属性Crew都是Required.
我的问题:当我从列表中逻辑删除一个项目时(按照Jarrett的方法),我不希望该项目得到验证.
我已成功调整客户端的"removeRow"方法,以禁用对逻辑删除的项目进行不显眼的验证,以便尽管存在包含空白字段的项目,表单仍会发布.
在我的控制器方法中[HttpPost] Edit,ModelState.IsValid启动为false(正如预期 - 因为逻辑删除的项目包含空白字段.)所以我从我的ViewModel中删除该项目....但ModelState.IsValid仍然是假的.
总之,我(我想)我想在控制器方法中修改我的ViewModel以删除有问题的项目,然后调用某种"revalidate",并ModelState.IsValid显示为true.
有任何想法吗?
asp.net-mvc unobtrusive-validation asp.net-mvc-3 asp.net-mvc-4
我有一个jQuery函数绑定到我的提交按钮,如下所示:
$(function () {
$('#signupform').submit(function () {
alert('test');
});
});
Run Code Online (Sandbox Code Playgroud)
但是,无论表单是否有效,它都会触发.我的模型摆放着很多DataAnnotations和客户端验证工作良好,但我只想说jQuery函数解雇如果表单已经过验证.我该如何做到这一点?
编辑:澄清一下,我正在使用MVC DataAnnotations + jQuery的不显眼的javascript来处理客户端验证.我没有写自己的javascript验证例程.内置的jQuery验证在验证表单方面做得很好,但我只需要知道如何在我自己的函数中将验证结果转换为布尔值.
我目前在动态添加内容后面临验证问题.
我有一个强烈键入模型(Order)的视图.此订单可以包含许多项目.该模型看起来如下所示:
public class Order
{
[Key]
[HiddenInput]
public int id { get; set; }
[Display(Name = "Order Number")]
public string number { get; set; }
[Display(Name = "Order Date")]
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
public DateTime date { get; set; }
[Required(ErrorMessage = "Beneficiary is required.")]
[Display(Name = "Beneficiary")]
public int beneficiary_id { get; set; }
[Display(Name = "Beneficiary")]
public Beneficiary beneficiary { get; set; }
[Display(Name = "Items")]
public List<Item> items { get; set; …Run Code Online (Sandbox Code Playgroud) asp.net-mvc partial-views dynamically-generated razor unobtrusive-validation
asp.net-mvc ×4
jquery ×4
boolean ×1
datepicker ×1
javascript ×1
jquery-ui ×1
localization ×1
razor ×1
validation ×1