Asp.net mvc 3 “解决方案”;“远程”;属性
我有一个Asp.net mvc 3 “解决方案”;“远程”;属性,asp.net-mvc-3,validation,Asp.net Mvc 3,Validation,我有一个注册和登录页面,这两个页面都使用了不引人注目的ajax。 我的模型中的Username属性用Remote(“ActionName”、“ControllerName”) 它在注册页面中工作正常,但问题是验证也在登录页面中工作。那么,我如何才能禁用登录页面上的远程验证属性,但我确实希望登录页面中的登录的ajax功能,因此我无法删除不引人注目的javascript文件您无法动态关闭远程验证程序 解决方案是不要对两个视图使用相同的模型 不要创建两个viewmodels,一个用于登录,另一个用于注
注册
和登录
页面,这两个页面都使用了不引人注目的ajax。我的模型中的
Username
属性用Remote(“ActionName”、“ControllerName”)
它在
注册页面
中工作正常,但问题是验证也在登录页面
中工作。那么,我如何才能禁用登录页面上的远程
验证属性,但我确实希望登录页面中的登录
的ajax功能,因此我无法删除不引人注目的javascript文件
您无法动态关闭远程验证程序
解决方案是不要对两个视图使用相同的模型
不要创建两个viewmodels,一个用于登录,另一个用于注册视图,并对它们进行不同的注释:
public class RegisterUserViewModel
{
[Remote("ActionName","ControllerName")]
public string Username { get; set; }
//...
}
public class LoginUserViewModel
{
public string Username { get; set; }
//...
}
要将属性从viewmodel映射到控制器中的模型,您可以使用一些对象映射器,如,感谢您的快速响应。我也猜到了同样的情况,但这样它会不断增加ViewModel的数量。这是最佳实践吗???顺便说一句,我已经接受了这个答案。不过,动态关闭Remote
validator会很好。不要担心创建大量的视图模型,使用它们是最佳实践。它有助于分离关注点,即每个视图都有自己的定制视图模型,以满足其特定需求。就像你在一个页面上的例子一样,你需要在另一个页面上进行验证,而你不需要。您可以开始阅读有关viewmodels的内容,例如和。关于关闭远程
:也许(我没有尝试过)使用JavaScript,您可以从输入元素(用于控制验证器)中动态删除MVC生成的数据-
属性,但我真的不建议采用这种方法。