在PartialView中获取变量

假设我将数据传递给这样的局部视图

@Html.Partial("_LandingPage_CaseStudiesList", new { TrackAction = "Case Study Click", CaseStudies = Model.CaseStudies }) 

然后我如何获取部分数据?

我已经尝试了Model["TrackAction"]Model.TrackAction但都没有工作,我不知道还有什么可以尝试。

如果我调试代码,我可以看到属性,但只是不知道用什么来取回它们

这是我的偏爱

  

这是我调试时得到的图像: http : //i.imgur.com/OiReWZv.gif

您可以将匿名对象作为模型传递给部分视图,就像您在问题中一样:

 @Html.Partial("_LandingPage_CaseStudiesList", new { TrackAction = "Case Study Click", CaseStudies = "fsdffd" }) 

那么你在局部视图中有几个选项:

  1. 不要在视图中声明模型(即不要在顶部包含@model MyModel类的语句)

  2. 将模型声明为动态(即包含类似@model dynamic的语句)

在这两种情况下,您都应该能够访问您的属性

 @Model.TrackAction @Model.CaseStudies 

此外,您不会在视图文件上具有智能感知,并且如果模型中不存在该属性,您将在运行时收到exception。

定义局部视图时,您可以定义将使用哪个类作为其数据上下文。 即:

 @model SomeViewModel 

MVC要求这是一个具体的类型。 因此,我建议在项目中创建一个名为ViewModels的文件夹,并创建一个用于保存信息的类。 所以举个例子:

 public class MyViewModel { public string TrackAction { get; set; } public string CaseStudies { get; set; } } 

您可以在定义局部视图时使用,如下所示:

 @Html.Partial("_LandingPage_CaseStudiesList", new MyViewModel{ TrackAction = "Case Study Click", CaseStudies = Model.CaseStudies }) 

如果您不想使用viewmodel,那么我建议您查看ViewBags等其他方法。