无法使C#View静态用于将数据从控制器传递到视图?

时间:2018-03-20 16:20:35

标签: c# asp.net-mvc

我试图将一个字符串从一个控制器传递给一个视图,我不太确定我错过了什么。我无法使控制器中的action方法保持静态,因为View随后出错

  

非静态字段需要对象引用。

我该如何解决这个问题?我将非常感谢您的详细解释或链接到您的来源,以便我可以学习。

我的控制器(LC)有:

...
public ActionResult Action()
{
    LC vm = new LC();
    vm.LicenseTable = DataPull(); //setting a variable in the controller
    return View("LicenseView", vm); //return a view named 'LicenseView'
}
...

my lcview.cshtml:

@using iw.Models //yes I screwed up and put a controller in the models folder
@model LC
<body>
    //<p>@LC.LicenseView</p> //calling the Model the the View name FAILS
    <p>@LC.Action()</p> //Fails because of error below
</body>

错误:

  

非静态方法LC.Action()

需要对象引用

2 个答案:

答案 0 :(得分:0)

您似乎正在尝试调用控制器名称Action的名为LC的操作方法。

您需要使用Html.Action,因为您希望在p元素中调用操作和渲染视图:

<p>@Html.Action("Action","LC")</p>

我们在此方法中指定控制器名称和操作名称,它将返回将呈现为html的视图。

答案 1 :(得分:0)

如我的评论中所述,在您的cshtml中,请使用

<p>@Model.Action()</p>

“@model LC”声明用作模型的对象类型,但是当您需要访问实际对象时,请使用“model”关键字。

修改

您是否尝试在HTML中显示LC.LicenseTable字符串? 使用以下内容:

<p>@Model.LicenseTable</p>