Asp.net mvc 3 MVC3.0的设计问题
我有一个视图用户:Asp.net mvc 3 MVC3.0的设计问题,asp.net-mvc-3,Asp.net Mvc 3,我有一个视图用户: public class User { public int id { get; set; } public string name { get; set; } public string email { get; set; } } 我创建了一个登录视图(强类型用户)。。。 但是我的登录视图还有其他属性,比如RememberMe复选框。。。该属性不属于用户模型 那么,最好的解决方法是什么呢?创建具有所有视图属性的新UserViewModel是一个选
public class User {
public int id { get; set; }
public string name { get; set; }
public string email { get; set; }
}
我创建了一个登录视图(强类型用户)。。。
但是我的登录视图还有其他属性,比如RememberMe复选框。。。该属性不属于用户模型
那么,最好的解决方法是什么呢?创建具有所有视图属性的新UserViewModel是一个选项,但我认为这不是最好的方法
保罗
那么,最好的解决方法是什么呢
通过使用视图模型:
public class LoginViewModel
{
public string Username { get; set; }
public string Password { get; set; }
public bool RememberMe { get; set; }
}
强烈输入用户模型的部分登录名几乎没有意义
那么,最好的解决方法是什么呢
通过使用视图模型:
public class LoginViewModel
{
public string Username { get; set; }
public string Password { get; set; }
public bool RememberMe { get; set; }
}
强烈输入用户模型的部分登录名几乎没有意义。对于最佳实践,我建议您使用Darin建议的ViewModel。您还可以创建一个工厂,用于将ViewModel复制到实体。这里的反射有点太多了 下面是Darin Dimitrov的详细示例
public class User
{
public string Username { get; set; }
public string Password { get; set; }
public bool RememberMe { get; set; }
}
public class LoginViewModel
{
[Required] ... and other validation
public string Username { get; set; }
public string Password { get; set; }
public bool RememberMe { get; set; }
}
public static class UserFactory
{
public static User GetUserFromModel(LoginViewModel m, User u)
{
u.Username = m.Username;
u.Password = m.Password;
return u;
}
}
public class UserController : DefaultController
{
public ActionResult Login(LoginViewModel m)
{
if (ModelState.IsValid)
{
User u = UserFactory.GetUserFromModel(m);
....code ...
}
... code...
}
}
@Darin很抱歉高举了你的例子,我记得自己在这方面有点困难,所以我想帮助你获得最佳实践,我建议你按照Darin的建议使用ViewModel。您还可以创建一个工厂,用于将ViewModel复制到实体。这里的反射有点太多了 下面是Darin Dimitrov的详细示例
public class User
{
public string Username { get; set; }
public string Password { get; set; }
public bool RememberMe { get; set; }
}
public class LoginViewModel
{
[Required] ... and other validation
public string Username { get; set; }
public string Password { get; set; }
public bool RememberMe { get; set; }
}
public static class UserFactory
{
public static User GetUserFromModel(LoginViewModel m, User u)
{
u.Username = m.Username;
u.Password = m.Password;
return u;
}
}
public class UserController : DefaultController
{
public ActionResult Login(LoginViewModel m)
{
if (ModelState.IsValid)
{
User u = UserFactory.GetUserFromModel(m);
....code ...
}
... code...
}
}
@Darin很抱歉高举了你的例子,我记得我自己在这方面有点困难,所以我只想帮助你谢谢,那么ViewModel将停留在哪里?在与Models?Paul相同的项目中,视图模型属于MVC应用层,因为它们与相应的视图紧密相连。
Models
文件夹似乎是放置它们的好地方。谢谢Darin。。。您认为不创建视图模型,而只添加视图上的RememberMe方法怎么样,比如:public ActionResult Index(User-User,bool-RememberMe)?它工作得很好,但我不知道最好的实践…@Paul,就我个人而言,我总是创建视图模型,无论是作为控制器动作的输入还是输出。你的方法也会奏效。我不能说哪一个更好,因为这是主观的。我只能告诉你我更喜欢什么。谢谢,那个ViewModel会住在哪里?在与Models?Paul相同的项目中,视图模型属于MVC应用层,因为它们与相应的视图紧密相连。Models
文件夹似乎是放置它们的好地方。谢谢Darin。。。您认为不创建视图模型,而只添加视图上的RememberMe方法怎么样,比如:public ActionResult Index(User-User,bool-RememberMe)?它工作得很好,但我不知道最好的实践…@Paul,就我个人而言,我总是创建视图模型,无论是作为控制器动作的输入还是输出。你的方法也会奏效。我不能说哪一个更好,因为这是主观的。我只能告诉你我喜欢什么。