Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在视图之间重用模型_Asp.net Mvc_Model View Controller - Fatal编程技术网

Asp.net mvc 在视图之间重用模型

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

我对MVC开发比较陌生,对如何组织模型和视图感到困惑

我正在构建一个注册表表单,它也可以作为更新配置文件表单重用。注册需要密码字段,但更新配置文件表单不需要密码字段,所以我只排除密码字段

在我的控制器中,我正在重用Register ActionResult并只是传入一个标志,无论它是更新还是插入:

    [HttpPost]
    public ActionResult Register(MyModel model)
    {
        if (!ModelState.IsValid)
        {
            return CurrentUmbracoPage();
        }

        if (model.IsUpdate)
        {
            //update
        }
        else
        {
            //insert
        }
     }

但是,对于更新配置文件表单,它总是无效的,因为从未设置密码字段。我知道我可以创建两个模型和两个控制器操作,一个用于注册,另一个用于更新配置文件,但这看起来像是重复了很多代码,或者可能就是这样做的。

为什么没有设置密码会有问题?@ArsenMkrt因为在我的模型中,我在密码属性上设置了必需的属性,这就是应该如何做的。你有两个不同的视图用于两个不同的目的,所以它应该是两个不同的视图模型。。。所以我要创建RegisterViewModel和UpdateProfileViewModel。。。这两个都是包装周围的模型,在一个密码是必需的,在另一个没有。。。而且你还必须创建两个动作是的。。。但逻辑是不同的,因此采用不同的观点是不可能的ok@ArsenMkrt那么,您是说创建一个具有视图之间共享的属性的模型,例如名字、姓氏等,然后将Password属性放在两个视图模型中?