Asp.net mvc 在视图之间重用模型
我对MVC开发比较陌生,对如何组织模型和视图感到困惑 我正在构建一个注册表表单,它也可以作为更新配置文件表单重用。注册需要密码字段,但更新配置文件表单不需要密码字段,所以我只排除密码字段 在我的控制器中,我正在重用Register ActionResult并只是传入一个标志,无论它是更新还是插入:Asp.net mvc 在视图之间重用模型,asp.net-mvc,model-view-controller,Asp.net Mvc,Model View Controller,我对MVC开发比较陌生,对如何组织模型和视图感到困惑 我正在构建一个注册表表单,它也可以作为更新配置文件表单重用。注册需要密码字段,但更新配置文件表单不需要密码字段,所以我只排除密码字段 在我的控制器中,我正在重用Register ActionResult并只是传入一个标志,无论它是更新还是插入: [HttpPost] public ActionResult Register(MyModel model) { if (!ModelState.IsValid
[HttpPost]
public ActionResult Register(MyModel model)
{
if (!ModelState.IsValid)
{
return CurrentUmbracoPage();
}
if (model.IsUpdate)
{
//update
}
else
{
//insert
}
}
但是,对于更新配置文件表单,它总是无效的,因为从未设置密码字段。我知道我可以创建两个模型和两个控制器操作,一个用于注册,另一个用于更新配置文件,但这看起来像是重复了很多代码,或者可能就是这样做的。为什么没有设置密码会有问题?@ArsenMkrt因为在我的模型中,我在密码属性上设置了必需的属性,这就是应该如何做的。你有两个不同的视图用于两个不同的目的,所以它应该是两个不同的视图模型。。。所以我要创建RegisterViewModel和UpdateProfileViewModel。。。这两个都是包装周围的模型,在一个密码是必需的,在另一个没有。。。而且你还必须创建两个动作是的。。。但逻辑是不同的,因此采用不同的观点是不可能的ok@ArsenMkrt那么,您是说创建一个具有视图之间共享的属性的模型,例如名字、姓氏等,然后将Password属性放在两个视图模型中?