我有所有脚本的布局页面,如下所示.
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Site</title>
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<some custom css>
<modernizr>
<script src="~/Scripts/Jquery/jquery-1.9.1.js"></script>
<script src="~/Scripts/Jquery/jquery-ui-1.10.2.js"></script>
<script src="~/Scripts/Jquery/jquery.unobtrusive-ajax.js"></script>
<script src="~/Scripts/Jquery/jquery.validate.js"></script>
<script src="~/Scripts/Jquery/jquery.validate.unobtrusive.js"></script>
<some custom scripts>
<bootstrap scripts>
<knockout scripts>
</head>
<body>
@RenderBody()
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
然后我有我的注册表格,如图所示
@model Mysite.Models.Account.Account
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "register" }))
{
@Html.AntiForgeryToken();
<h1>Login</h1>
@Html.ValidationSummary();
@Html.EditorFor(m => m.Name)
@Html.EditorFor(m => m.Address1)
@Html.EditorFor(m => m.Address2)
@Html.EditorFor(m => m.Phone1)
<input type="button" …Run Code Online (Sandbox Code Playgroud) asp.net-mvc jquery jquery-validate client-side-validation unobtrusive-validation
我正在使用jQuery.Validation插件进行客户端验证,其中包括验证电子邮件地址.现在我也想在服务器端验证(对于没有javascript的用户等).由于缺乏更好的想法,我开始使用正则表达式,但很快我就意识到我希望使用与jQuery方法相同的要求.或者,如果我能找到一些方法来覆盖我自己的jQuery验证要求,那就可以了.
有谁知道jQuery方法有什么要求?它是正则表达式验证,并且,如果是,表达式是什么?有没有办法覆盖它,即使我不知道它?
(我已经注意到可以预先形成远程验证,但如果可能的话,我想避免这种额外的网络流量......)
在ASP.NET MVC4应用程序中,我们使用FluentValidation来验证我们的模型.在某些情况下,我们只想在另一个属性具有值时验证属性.我们使用When关键字来完成此任务.一个简单的验证类如下所示:
public class PersonValidator : AbstractValidator<Person>
{
public PersonValidator()
{
RuleFor(item => item.FirstName).NotEmpty();
RuleFor(item => item.LastName).NotEmpty().When(item => !string.IsNullOrEmpty(item.FirstName))
}
}
Run Code Online (Sandbox Code Playgroud)
我们希望对此进行客户端验证.我试图创建一个自定义FluentValidationPropertyValidator.但我找不到一种方法来获取验证规则的When部分.有人能指出我正确的方向吗?
我正在尝试使用episerver xform
编译的html 执行客户端表单验证,如下所示:http://codepen.io/anon/pen/ojGGJw
如何实现这一目标的任何指导?我正在考虑使用.validate库,但如果我们通过epi向表单添加新控件,我将遇到问题.我还尝试使用这样的AJAX调用:
$.ajax({
url: "/industry/XFormPost?XFormId=0643b992-56c6-40a5-91eb-c557443630e0&failedAction=Failed&successAction=Success&contentId=36",
data: $(this).serialize(),
type: "POST",
success: function () {
alert('Hello this is a valid form');
}
});
Run Code Online (Sandbox Code Playgroud)
它会触发事件,但不会将我的表单保存到数据库中.即使我通过的所有领域都是有效的
我有以下视图有效:
<%= Html.TextBoxFor(m => m.FirstName, new { @class = "required_field_light" }) %>
<%= Html.ValidationMessageFor(m => m.FirstName) %>
Run Code Online (Sandbox Code Playgroud)
但是,如果我将ValidationMessageFor()更改为ValidateFor(),如下所示:
<%= Html.ValidateFor(m => m.FirstName) %>
Run Code Online (Sandbox Code Playgroud)
我得到这个编译错误:
"The best overloaded method match for 'System.IO.TextWriter.Write(char)' has some invalid arguments"
"Argument '1': cannot convert from 'void' to 'char'"
Run Code Online (Sandbox Code Playgroud)
我认为我在某处遗漏了一些东西,但我无法弄清楚它是什么.有没有其他人遇到过这个问题并找到了解决方案,或者有人知道如何解决这个问题?
您建议在MVC中验证客户端的DateTime有哪些方法?
比方说,我有一个命名属性的模型DateOfBirth是一个DateTime,像这样.
public class UserModel
{
[DataType(DataType.Date)]
public DateTime DateOfBirth {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
在View上,我有一个简单的
<%: Html.LabelFor(model=>model.DateOfBirth) %>
<%: Html.EditorFor(model=>model.DateOfBirth) %>
<%: Html.ValidationMessageFor(model=>model.DateOfBirth) %>
<input type="submit" value="Submit" />
Run Code Online (Sandbox Code Playgroud)
我可以使用Microsoft MVC验证或jQuery验证.如何让DateTime验证客户端?
我意识到所有DataTypeAttribute都提供了格式化提示,并没有真正做任何验证(它将该部分留给了ModelBinder).
基本上我想复制ModelBinder在尝试将发布的值放入模型的DateOfBirth属性时所做的事情.
你有什么建议?
javascript datetime client-side-validation asp.net-mvc-2-validation asp.net-mvc-2
我不太明白为什么客户端验证是一个潜在的安全风险或更多的安全风险而不是服务器端验证?有人可以给我一些场景吗?
当然,我知道服务器端验证是必须的.
我正在使用jQuery来验证表单输入并使用jquery ajax同时进行服务器端(PHP)验证.所以我猜它可能是安全的,因为它在启用javascript时验证双方.
好吧,这是我的问题......
但是如果用户在他的浏览器上禁用了javascript,并且有些坏人试图通过编辑我的客户端脚本来做坏事怎么办?
因为我正在通过jquery ajax进行服务器端验证,并且我打算不在php脚本中直接验证它们(action ="some.php"),甚至启用了用户的javascript.
那么......它还安全吗?
抱歉我的英文不好,希望你不介意.
security validation client-side-validation server-side-validation
使用验证器同时使用客户端验证(JavaScript)和服务器端验证的论点是:如果客户端浏览器不支持JavaScript,则用户无法使用客户端验证.
我的问题是这个论点在实践中有多好?理论上它是有道理的,但在实践中,如果在浏览器中禁用JavaScript,那么大多数网站功能都无法工作.用户可能甚至无法在没有JavaScript的情况下加载页面,更不用说提交表单了.
javascript validation web-applications client-side-validation server-side-validation
我有一个ASP.NET MVC 4应用程序,它使用jQuery.validation.js插件和MVC的jQuery.validation.unobtrusive.js.我在视图模型上使用数据注释来验证文本框的输入是否为整数.
使用...在父视图中加载此(嵌套)视图
<% Html.RenderPartial("New"); %>
Run Code Online (Sandbox Code Playgroud)
第一个初始页面加载,客户端验证工作.但是任何使用ajax调用重新加载嵌套视图,客户端验证都不再有效.这是为什么?
更新 :(来自webdeveloper解决方案的代码示例)
$.validator.unobtrusive.parse($('form'));
Run Code Online (Sandbox Code Playgroud)
例:
var saveAndUpdate = function (url) {
var myForm = $('form', $('#TheDivThatContainsTheNewHTML'));
$.ajax({
url: url,
type: 'POST',
data: myForm.serialize(),
success: function (result) {
$('#TheDivThatContainsTheNewHTML').html(result);
$.validator.unobtrusive.parse($('#TheDivThatContainsTheNewHTML'));
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
},
dataType: 'html'
});
}
Run Code Online (Sandbox Code Playgroud) asp.net-mvc client-side-validation asp.net-mvc-validation unobtrusive-validation asp.net-mvc-4
validation ×4
asp.net-mvc ×3
javascript ×2
jquery ×2
datetime ×1
episerver ×1
linq ×1
security ×1