如何在没有实现的情况下使用客户端验证创建自定义验证属性IClientValidatable?
System.ComponentModel.DataAnnotations.RequiredAttribute客户端如何验证?
这样做的原因是因为我在另一个项目中使用类中的对象作为视图中的模型,我不想添加System.Web.MVC对该项目的引用.
编辑以添加更多信息:
我知道这IClientValidatable用于向HTML添加自定义属性,稍后将通过不引人注意的验证使用.
我知道我需要添加javascript代码才能在客户端进行验证.
我不知道的是如何使用自定义验证属性中的信息向HTML添加必要的属性,以便进行不显眼的验证.
这是我的自定义验证属性:
public class RequiredGuidAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
Guid? guidValue = value as Guid?;
if (guidValue == null)
return false;
return guidValue != Guid.Empty;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我应用了属性的属性:
[RequiredGuid(ErrorMessageResourceType = typeof(ClientOrderResources), ErrorMessageResourceName = "RequiredShippingMethod")]
public Guid ShippingMethodId
{
get { return GetProperty(ShippingMethodIdProperty); }
set { SetProperty(ShippingMethodIdProperty, value); }
}
Run Code Online (Sandbox Code Playgroud)
最后我在视图中为该属性渲染隐藏的输入Html.HiddenFor.
现在,如何从属性中获取错误消息以将其应用于HTML?我应该自己动手使用Reflection还是有更好的方法?
然后我如何告诉Html.HiddenFor使用该信息为HTML添加必要的属性?
如何在Razor视图中使用rowspan合并表格中的单元格?
生成的HTML应该是这样的:
<table>
<tr>
<td rowspan="2">Column 1 row 1</td>
<td>Column 2 row 1</td>
</tr>
<tr>
<td>Column 2 row 2</td>
</tr>
<tr>
<td rowspan="3">Column 1 row 3</td>
<td>Column 2 row 3</td>
</tr>
<tr>
<td>Column 2 row 4</td>
</tr>
<tr>
<td>Column 2 row 5</td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
编辑以添加数据源和所需结果:
数据源可能类似于带有类别的产品.例如:
????????????????????????
? Electronics ? Laptop ?
? ? iPod ?
? ? TV ?
????????????????????????
? Groceries ? Coffee ? …Run Code Online (Sandbox Code Playgroud)