11-DisplayTemplates的使用
通过配置showfordisply可以让某些字段是否呈现
在Html中可以使用displayformodel来显示某些字段。
显示模板示例
@model DateTime
<div>
<span>@ViewData.ModelMetadata.DisplayName:</span>
<span>@Model</span>
</div>Code language: HTML, XML (xml)
12-重写ASP.NET MVC视图引擎实现换主题功能
我们可以重写一个我们自己的视图引擎,这样可以加载不同文件夹下面的视图模板
这样就可以达到更换视图的效果
写一个类型 继承BuildManagerViewEngine
比如ThemeViewEngine
然后构造函数 我们传入一个主题目录的文件夹 这样就可以动态改变视图文件夹了
我们在gloable文件夹里面
通过clear去掉原来的视图引擎,然后注册我们自己的视图引擎
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new ThemeViewEngine("主题文件夹名称", null));Code language: CSS (css)
13-自定义验证标注包括前端和服务器
验证标注借助jquery的验证框架来实现前端验证,后端验证的话,是在C#代码里面去实现。
我们下面以一个勾选框为例子,我们自定义一个checkboxrequired标注,在这个标注中如果选择isRequire为true,那么就是用户不需勾选了才能提交。
这个标注适合一些阅读责任书的地方
添加一个标注类
因为不是用来呈现控件,所以我们只需要继承
public class CheckBoxRequiredAttribute : ValidationAttribute, IClientValidatable
这两个类和接口就可以了
添加一个属性
public bool IsChecked { get; set; }Code language: JavaScript (javascript)
然后我们添加一个服务端验证方法
服务器端验证方法
public override bool IsValid(object value)
{
if(is)
return Convert.ToBoolean(value);
}Code language: PHP (php)
然后再添加客户端方法
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
ModelClientValidationRule rule = new ModelClientValidationRule
{
ValidationType = "ckrequired",
ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()+"必须选择")
};
rule.ValidationParameters.Add("ischecked", this.Checked);
yield return rule;
}Code language: JavaScript (javascript)
其中ValidationType 是验证的js方法名
然后我们添加一个jquery.validate.custom.js的扩展方法
这个是js的验证方法
$.validator.addMethod("ckrequired", function (value, element, param) {
return element.checked;
});
$.validator.unobtrusive.adapters.addSingleVal("ckrequired", "ischecked");//这个其实在这里用不到Code language: JavaScript (javascript)
Previous: 标注
Next: Scripts和Style