我知道在MVC3可以创建一个model,为属性添加象[required]之类的特性,在render时,会自动设置验证。
在服务端也可以调用modelstate审查表单核验结果。可是,通常运用是比较自定义的,举个例子:
一个登录入口,有:
用户名,密码
两个文本输入,那这时,他不是一完整的model输入,我该如何做验证呢。
在web form架构下,我为这两个文本输入框分别设置require控件,然后在服务端调用page.isvalidate属性,即可知道表单是否验证通过。可是,在MVC怎么实现呢,不可能为了这个还有去创建一个只有用户名,密码的model吧?请教指导,谢谢!
在服务端也可以调用modelstate审查表单核验结果。可是,通常运用是比较自定义的,举个例子:
一个登录入口,有:
用户名,密码
两个文本输入,那这时,他不是一完整的model输入,我该如何做验证呢。
在web form架构下,我为这两个文本输入框分别设置require控件,然后在服务端调用page.isvalidate属性,即可知道表单是否验证通过。可是,在MVC怎么实现呢,不可能为了这个还有去创建一个只有用户名,密码的model吧?请教指导,谢谢!
解决方案 »
- jquery接收后台传值出现error: function()错误
- (vs2008(c#)+sql server 2005 备份和恢复数据库的详细代码,能直接运行)
- 如何获得GridView上的值
- 熟悉CompanionJS的请进,请帮忙答疑解惑。
- 响应文本框的TextChanged事件时自动响应按钮的click事件的问题
- ASP.NET和c#到底是啥关系?????
- ASP.NET在什么情况下可以在<%和%>之间写多行代码?!
- 广州番禺区招聘C#程序员两名
- **********************请问关于c#调用c++的问题******************************
- 一个小问题;望高手指教
- Session中取值。请问怎么取。
- 谁有.net好点的项目发我几个
包括使用在调用时使用[Bind(Exclude = "Id")]之流试图不去绑定这个参数,也不好使你的方法,建议直接遍历ModelState的键值,只查你需要验证的属性是true还是false
大致的代码如下
internal bool IsModelError(ModelStateDictionary ModelState,IEnumerable<string> Fields)
{
foreach (var field in Fields)
{
if (ModelState[field].Errors.Count > 0) return false;
}
return true;
}
public static bool ValidateFields(this ModelStateDictionary msd, IEnumerable<string> needValidateFields)
{
foreach (var field in needValidateFields)
{
if (msd.Keys.Contains(field))
{
if (msd[field].Errors.Count > 0) return false;
}
}
return true;
}
调用示例 if (ModelState.ValidateFields(new string[]{"Name","Password"}))
{
db.User.AddObject(user);
db.SaveChanges();
Message("已成功提交。");
}
感谢关注,可能我还停留在WEB FORM阶段那种便捷开发观念。
从这个常见的问题,本来在WEB FORM是很简单的事情,现在要改变了,貌似变得有点小复杂,一时有点接受不了,哈哈。
第二个就是在Model里设定属性的默认值供参考