使用Knockout JS和jQuery模板控制Html表单.基本的jQuery验证用于验证字段.表单被序列化为JSON并使用AJAX提交给MVC控制器操作.MVC控制器操作执行服务器端模型验证,向ModelState添加错误.
将这些错误返回给客户端的最佳做法是什么 - 在ModelState中迭代错误并将它们添加到JSON响应中的错误的键/值集合中?
你如何在客户端上显示错误?如何将错误的键/值集合"绑定"到模型的相关字段?
假设模型上有一个"名称"字段,jQuery模板呈现相应的文本框.如何在错误集合中的"名称"字段中获取错误,并在"名称"文本框下方显示错误消息?
我做了我的研究,但没有找到任何答案.
我在主页中使用Html.RenderAction(用于呈现具有特定于用户权限的链接的页眉).Action使用OutputCache修饰,返回部分控件并按预期缓存.
当事件发生时(假设权限已更改)我想以编程方式使缓存的部分控件无效.
我正在尝试使用RemoveOutputCacheItem方法.它将路径作为参数.我正在尝试设置Html.RenderAction中使用的操作的路径.这不会使行动失效.
如何以编程方式使操作无效?
谢谢
我正在使用不显眼的验证来处理本地化的mvc3 Web应用程序.在web.config中我得到了:
<globalization culture="pl-PL" uiCulture="pl" />
Run Code Online (Sandbox Code Playgroud)
Jquery 1.4.4和jquery验证1.6正在使用中.
问题是十进制数字分隔符.
我可以看到jquery验证忽略了文化,并期望点字符始终是小数分隔符.我需要使用逗号代替.我认为例如德语也是如此.
我创建了自己的methods_pl.js文件:
jQuery.extend(jQuery.validator.methods, {
number: function(value, element) {
return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value);
}
});
Run Code Online (Sandbox Code Playgroud)
以上是解决十进制数根本无法识别的基本问题.
但是当我尝试在我的模型Decimal Price属性上使用RangeAttribute时,它仍然不起作用.怎么解决这个?
当我在视图上只有一个模型实例时,远程验证工作正常.
问题是我的观点是处理模型的集合.这是我的模型:
public class TableFormTestModel
{
public GridRow[] GridData { get; set; }
public class GridRow
{
public Int32 Id { get; set; }
[Required, StringLength(50), Remote("IsNameAvailable", "TableFormTest", "Admin", AdditionalFields = "Id")]
public String Name { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
在我看来,我有:
@model TableFormTestModel
@using (Html.BeginForm())
{
Html.EnableClientValidation();
Html.EnableUnobtrusiveJavaScript();
for(var i = 0;i<Model.GridData.Length;i++)
{
<div>
@Html.HiddenFor(x => Model.GridData[i].Id)
@Html.TextBoxFor(x => Model.GridData[i].Name)
@Html.ValidationMessageFor(x => Model.GridData[i].Name)
</div>
}
}
Run Code Online (Sandbox Code Playgroud)
生成表单有很长的路要走,有人可以为我改进语法吗?
生成以下html表单:
<form method="post" action="/Admin/TableFormTest/"> <div>
<input type="hidden" value="1" name="GridData[0].Id" id="GridData_0__Id" data-val-required="The Id …Run Code Online (Sandbox Code Playgroud) 我的模型(A类)有一个B类属性(称为b)并已IValidatableObject实现.
视图已经有了 @Html.ValidationSummary(true)
在验证摘要中,我想排除与属性相关的错误.在B类IValidatableObject实现中返回ValidationResult没有memberNames
但是IValidatableObject由于B类是A类的属性,因此不会显示B类的Valiadtion错误
如何显示B类非属性验证错误?