Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.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
C# 在现有项目上创建viewmodel_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# 在现有项目上创建viewmodel

C# 在现有项目上创建viewmodel,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我试图将viewmodel添加到项目中,因为我希望视图使用两个单独的模型。我看过不同的教程试图学习如何做到这一点,但我有一些麻烦。以前,视图是强绑定(键入?)到Person模型的,但是现在当我们添加Person时,我们希望他们上载一个文件,但是这个文件在数据库中它自己的表中,所以我必须创建一个新的FileToBeUploaded模型 我创建了一个新类,并向其中添加了我想要的属性 namespace Project.ViewModel { public class ViewModel

我试图将viewmodel添加到项目中,因为我希望视图使用两个单独的模型。我看过不同的教程试图学习如何做到这一点,但我有一些麻烦。以前,视图是强绑定(键入?)到Person模型的,但是现在当我们添加Person时,我们希望他们上载一个文件,但是这个文件在数据库中它自己的表中,所以我必须创建一个新的FileToBeUploaded模型

我创建了一个新类,并向其中添加了我想要的属性

namespace Project.ViewModel
{
    public class ViewModel
    {

        public Person personVM { get; private set; }
        public FileToBeUploaded fileVM { get; private set; }


     }
}
现在我的问题是,当我想将它与我正在使用的视图紧密绑定时,我写道

@model Project.ViewModel
而不是旧的Project.Models.Person

但是我得到一个错误,说“Project.ViewModel是一个名称空间,但像类型一样使用”


因此,我不知道在创建viewmodel和尝试在视图中访问viewmodel之间是否遗漏了一些步骤,我觉得我在viewmodel上看到的教程对此不是很清楚。

您使用的是名称空间,您的全名是
Project.viewmodel.viewmodel
(名称空间为
Project.ViewModel
,类名为
ViewModel
),因此使用以下名称代替:

@model Project.ViewModel.ViewModel

哇,这真是太简单了。一旦我这么做了,它会像用model=>model.personVM.Personproperty替换model=>model.Personproperty的任何实例一样简单吗?[在视图中]好的,我想我现在的最后一个问题是…我如何访问控制器中的ViewModel?我应该在顶部使用using语句吗?您可以在文件顶部添加
using Project.ViewModel;
,或者使用完整限定符初始化您的模型,例如
var ViewModel=new Project.ViewModel.ViewModel()
我不确定是否要在这里问这个问题,但事实证明FileToBeUploaded模型是Person模型的一个属性(两个表之间有1:1的关系),因此FileToBeUploaded在我的视图中已经可用。在这种情况下,甚至创建一个单独的ViewModel有意义吗?(我在尝试使用一个时遇到了一百万个错误,我只是有点退缩了)