我试图将一个字符串从一个控制器传递给一个视图,我不太确定我错过了什么。我无法使控制器中的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()
需要对象引用
答案 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>