Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.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中使用带有PartialView的ViewModel_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 在ASP.NET MVC中使用带有PartialView的ViewModel

Asp.net mvc 在ASP.NET MVC中使用带有PartialView的ViewModel,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我试图将PartialView与ViewModel一起使用,但我得到了错误 传递到字典中的模型项的类型为“Regression”,但此字典需要类型为“RegressionVM”的模型项 控制器: public ActionResult _Regression(Regression regression) { var model = new ViewModels.RegressionVM(regression); return Pa

我试图将PartialView与ViewModel一起使用,但我得到了错误

传递到字典中的模型项的类型为“Regression”,但此字典需要类型为“RegressionVM”的模型项

控制器:

public ActionResult _Regression(Regression regression)
        {
            var model = new ViewModels.RegressionVM(regression); 
            return PartialView(model);
        }
局部视图

@model  ViewModels.RegressionVM

    <div>
        <p>Correlation Coefficient : @Model.Regression.CorrelationCoefficient</p> 
    </div>
我已经检查了传递给部分控制器的对象是否为null,并且类型是否正确。 如果在控制器中,我只是简单地接受一个类型回归,并将其传递给PartialView,该视图工作正常,但每当使用视图模型模式时,我都会出错

有趣的是,如果我从局部控制器中省略viewmodel,如下所示,错误就会消失(显然,我将局部视图更改为接受@model回归):


我正在使用ASP.NET MVC 4

您需要更改此设置

 @Html.Partial("_Regression", SectorAnalysis.evReg)
对此

 @Html.Action("_Regression", "ControllerName", SectorAnalysis.evReg) 
理由:


Html.Partial
不调用控制器操作,它只是尝试使用您发送的模型呈现局部视图。在本例中,您正在将类型为
Regression
的模型发送到需要模型类型为
ViewModels.RegressionVM
的局部视图。通过调用
Html.Action()
,您正在指示razor视图引擎在控制器中执行操作,该操作接受
回归
类型对象,并将
视图模型.回归VM
返回到部分视图。

主视图中的模型是什么(我假设它是
@model回归
)?该错误意味着
SectorAnalysis.evReg
null
,因此
@Html.Partial()
方法在主视图中使用该模型。你做什么有点不清楚,因为你没有提供足够的信息。例如,您在哪里调用
\u Regression()
?什么是
SectorAnalysis.evReg
?它是一个静态字段还是模型的一部分?@Stephen我假设主模型视图是不相关的(它是另一个viewmodel)。回归实际上是一个类而不是一个方法。我在调试器中检查evReg是否属于正确的类且不为null。我通过展示什么起作用(即不在控制器中使用viewmodel)使问题更清楚一些。我知道回归是一个类:)。我指的是
\u Regression()
(控制器方法)在看到您的编辑后,我假设
SectorAnalysis.evReg
回归的类型(而不是它需要的
回归VM
@Html.Partial()
不调用服务器方法并执行
\u Regression()
方法中的代码-它只是呈现部分。如果
evReg
Regression
的类型,那么您需要使用
@Html.Action(“\u Regression”,SectorAnalysis.evReg)
 @Html.Partial("_Regression", SectorAnalysis.evReg)
 @Html.Action("_Regression", "ControllerName", SectorAnalysis.evReg)