ASP.NET MVC 视图无法看到匿名对象 viewModel 的成员

ASP.NET MVC View can't see member of an anonymous object viewModel

我正在尝试创建一个匿名对象视图模型,其中一个成员来自 Models 文件夹,另一个来自我自己的自定义 classes 文件夹:

var viewModel = new {
    test1 = new Models.Test1(),
    test2 = new Classes.Test2()
};

return View(viewModel);

在视图中,@Model,如果您 pause/breakpoint,并使用 Visual Studio 调试器检查它,包含:

型号[按回车键]:

{ Test1 = {MVC_Test1.Models.Test1}, Test2 = {MVC_Test1.Classes.Test2} }
    Test1: {MVC_Test1.Models.Test1}
    Test2: {MVC_Test1.Classes.Test2}

但是,如果您尝试以下操作:

Model.Test1 [按回车键]

'Model.Test1' threw an exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException'
Message: "'object' does not contain a definition for 'Test1'"

怎么了?有没有办法引用以这种方式动态创建的视图模型?或者我必须显式创建一个 class 将 Models.Test1()Classes.Test2() 实例化为一个 class,并使用它代替匿名对象吗?

视图的匿名模型没有任何意义,因为您必须创建匿名输入控件,所以创建一个真正的类型化视图模型

public class ViewModel
{   
public Test1 Test1 {get; set;}
public Test2 Test2 {get; set;}  
};

model  = new ViewModel {
    test1 = new Models.Test1(),
    test2 = new Classes.Test2()
};

return View(model);
````