我正在使用ASP.NET MVC 3代码优先,我已经将验证数据注释添加到我的模型中.这是一个示例模型:
public class Product
{
public int ProductId { get; set; }
[Required(ErrorMessage = "Please enter a name")]
public string Name { get; set; }
[Required(ErrorMessage = "Please enter a description")]
[DataType(DataType.MultilineText)]
public string Description { get; set; }
[Required(ErrorMessage = "Please provide a logo")]
public string Logo { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在我的网站中,我有一个创建新产品的多步骤过程 - 第1步输入产品详细信息,第2步其他信息等.在每个步骤之间我将每个对象(即Product对象)存储在Session中,因此用户可以返回到该过程的那个阶段并修改他们输入的数据.
在每个屏幕上,我都有客户端验证,使用新的jQuery验证.
最后阶段是确认屏幕,之后将在数据库中创建产品.但是,因为用户可以在各个阶段之间跳转,所以我需要验证对象(产品和其他一些对象)以检查它们是否已正确完成数据.
有没有办法以编程方式在具有数据注释的对象上调用ModelState验证?我不想浏览对象上的每个属性并进行手动验证.
如果能够更轻松地使用ASP.NET MVC 3的模型验证功能,我愿意接受如何改进此过程的建议.
我RangeValidator在我的模型中有一个属性,只允许0到100之间的整数.我有一个部分视图,显示一个表单,通过jQuery UI对话框更新属性.我查看了源代码,可以确认正确生成了数据注释属性.但是,验证无法正常工作.它确实执行某种验证,但它没有使用我设置的范围.值1,10和100不会产生错误.任何其他单个或两个数字值都会产生错误.但是,如果我用零填充,所有小于100的值都可以.
模型:
public class MyModel
{
...
[Required(ErrorMessage = "{0} is required")]
[Range(typeof(int), "0", "100",
ErrorMessage = "{0} can only be between {1} and {2}")]
public int Percentage { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
局部视图:
@model MyApp.Models.Partials.MyModel
<div id="myDialog" class="editModal" title="Update Percentage">
@using (Ajax.BeginForm("UpdatePercentage", "MyController",
new AjaxOptions() { HttpMethod = "Post",
OnSuccess = "onUpdateSuccess" },
new { name = "myForm" }))
{
@Html.ValidationSummary(null, new { style = "width:auto;max-width:22em;
float:left;clear:both;" })
<div style="width:auto;float:left;clear:both;">
<div style="width:10em;float: left;text-align:right;clear:left;">
@Html.Label("Percentage:")
</div> …Run Code Online (Sandbox Code Playgroud) asp.net-mvc jquery-ui asp.net-mvc-validation data-annotations asp.net-mvc-3
我正在尝试解决"从客户端检测到一个有潜在危险的Request.Form值"问题,并且SO答案和 Scott Hanselman建议设置
<httpRuntime requestValidationMode="2.0" />
Run Code Online (Sandbox Code Playgroud)
在Web.config中(以及向有问题的方法添加属性).
我意识到这会将验证模式更改为ASP.NET 2.0,但这意味着什么?
而且,这种变化是否有任何我应该注意的副作用?
谢谢.
我在ASP.net MVC 3中有以下视图:
@model Models.CreateProjectViewModel
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>
@using( Html.BeginForm() ) {
@Html.TextBoxFor(m => m.ProjectName)
@Html.ValidationMessageFor(m => m.ProjectName)
<p>
<input type="submit" value="Save" />
</p>
}
Run Code Online (Sandbox Code Playgroud)
我正在使用不引人注目的javascript与jQuery和Fluent验证框架.
当我单击"保存"按钮并且验证失败时,是否有一些事件我可以挂钩调用一些自定义的JavaScript?
function validationFailed() {
// do something here only if validation failed
}
Run Code Online (Sandbox Code Playgroud)
我如何与验证绑定,以便在失败时(并且只有失败)我可以调用validationFailed()函数.
asp.net-mvc asp.net-mvc-validation fluentvalidation unobtrusive-validation asp.net-mvc-3
我正在搞乱数据注释.当我点击链接转到某个页面时,会显示验证消息,但我希望验证消息不显示,除非已发布数据.
视图:
@Html.TextBoxFor(m => m.EmailAddress, new { @placeholder = "Enter Email", @class = "form-control" })
@Html.ValidationSummary(true, "Registration Failed. Check your credentials")
@Html.ValidationMessageFor(m => m.EmailAddress, "You must enter a valid Email Address.")
Run Code Online (Sandbox Code Playgroud)
模型:
[Required(ErrorMessage = "Email is required")]
[DataType(DataType.EmailAddress)]
[EmailAddress]
[Display(Name = "Email Address: ")]
public string EmailAddress { get; set; }
Run Code Online (Sandbox Code Playgroud)
控制器:
[HttpGet]
public ActionResult AddUser()
{
return View();
}
[HttpPost]
public ActionResult AddUser(UserCreateViewModel user)
{
if (ModelState.IsValid)
{
var success = UserRepository.AddUser(user);
if (success)
{
return View("Success");
}
} …Run Code Online (Sandbox Code Playgroud) c# asp.net-mvc asp.net-mvc-validation data-annotations razor
使用MVC 3应用程序.
我需要在验证消息html中添加一个类.我的意思是span标签.
我的模特
[Required(ErrorMessage = "Role Name is required")]
[RegularExpression(@"^[a-zA-Z ]+$",
ErrorMessage = "Only alphabets and spaces allowed")]
public string RoleName { get; set; }
Run Code Online (Sandbox Code Playgroud)
标记
<label for="name">RoleName</label>
@Html.TextBoxFor(m => m.RoleName)
@Html.ValidationMessageFor(m => m.RoleName, "some",
new { @class = "immediate" })
Run Code Online (Sandbox Code Playgroud)
但我看不到像@ Html.ValidationMessageFor(m => m.RoleName,htmlAttributes)这样的重载方法 .如果我给出一些文字,它没有显示我在模型中输入的验证消息.它总是只显示一些文字.
对此有任何修复?
我有一个两步形式的过程,其中第一组数据存储在会话中.
[IsMp4File]
[Required(ErrorMessage = "* Please select a video to upload")]
public HttpPostedFileBase VideoClip { get; set; }
[Required(ErrorMessage = "* Please select a thumbmail image")]
public HttpPostedFileBase VideoThumbnail{ get; set; }
public string VideoFileName { get { return VideoClip.FileName; } }
public NewsWizardStep CurrentStep { get; set; }
Run Code Online (Sandbox Code Playgroud)
...
public enum NewsWizardStep : int
{
One = 1,
Two = 2,
Three = 3,
Four = 4,
Five = 5,
Six = 6
}
Run Code Online (Sandbox Code Playgroud)
调节器
public ActionResult TvCreate(TvNewsVideoVM modelVM) …Run Code Online (Sandbox Code Playgroud) 我想为MVC2创建一个自定义验证属性,用于不从RegularExpressionAttribute继承但可以在客户端验证中使用的电子邮件地址.谁能指出我正确的方向?
我尝试了一些简单的事情:
[AttributeUsage( AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false )]
public class EmailAddressAttribute : RegularExpressionAttribute
{
public EmailAddressAttribute( )
: base( Validation.EmailAddressRegex ) { }
}
Run Code Online (Sandbox Code Playgroud)
但它似乎对客户不起作用.但是,如果我使用RegularExpression(Validation.EmailAddressRegex)]它似乎工作正常.
假设您有一个标准的ValidationSummary:
<%: Html.ValidationSummary(excludePropertyErrors: true) %>
Run Code Online (Sandbox Code Playgroud)
如果ModelState包含属性的模型错误但不包含模型本身的模型错误,则ValidationSummary将呈现以下HTML:
<div class="validation-summary-errors"><ul><li style="display:none"></li></ul></div>
Run Code Online (Sandbox Code Playgroud)
由于列表周围有红色边框,因此显示为空列表但仍然可见.这对我来说似乎是个错误.我可以关闭ValidationSummary助手将呈现一个空列表吗?
我有一个类用户,看起来像这样:
public class User
{
public int UserId { get; set; }
[Required(ErrorMessage = "A username is required.")]
[StringLength(20, ErrorMessage = "Your username must be 4-20 characters.", MinimumLength = 4)]
[RegularExpression("^[a-zA-Z0-9]*$", ErrorMessage = "Your username can only consist of letters and numbers.")]
[Remote("UsernameExists", "RemoteValidation", ErrorMessage = "Username is already taken")]
public string Username { get; set; }
[Required(ErrorMessage = "A password is required.")]
[MinLength(4, ErrorMessage = "Your password must have at least 4 letters.")]
public string Password { get; set; …Run Code Online (Sandbox Code Playgroud)