我正在使用 ASP.NET MVC 3 和 Razor 引擎。我有一个包含一行的部分 View :
@Html.ActionLink(ViewData["UserNameIfLoggedIn"], "Index", "Home")
此部分 View 在我的 _Layout.cshtml
View 中呈现。调用 Controller /操作的代码片段是这样的:
@{Html.RenderAction("UserLoggedIn", "User");}
我收到编译错误,指出:
“System.Web.Mvc.HtmlHelper”不包含“ActionLink”的定义和最佳扩展方法重载“System.Web.Mvc.Html.LinkExtensions.ActionLink(System.Web.Mvc.HtmlHelper, string, string, object)' 有一些无效参数
我在另一个 MVC 应用程序(教程)中进行了类似的调用(相同数量的参数和相同的参数数据类型),并且执行得很好。这可能是什么原因造成的?为什么现在不起作用?
我知道这可能是一个非常菜鸟的 MVC 问题,但我无法解决这个问题。
编辑:解决方案是这样的:
@Html.ActionLink(ViewData["UserNameIfLoggedIn"].ToString(), "Index", "Home")
我只需要调用 ToString()
方法即可获取字符串形式的参数。
最佳答案
您需要一个字符串作为 ActionLink 中的第一个参数,我不确定,但我认为 ViewData 是一个字典。
尝试一下这只是一个测试
@Html.ActionLink("test", "Index", "Home")
如果可行,那么您需要循环 ViewData 并获取所有单个值,并将它们作为字符串传递。不过,我不确定你的 ViewData 是什么。
如果您只需要单个值,请改用 ViewBag。
http://brendan.enrick.com/post/Difference-Between-ViewBag-and-ViewData-in-MVC-3.aspx
关于c# - Html.ActionLink() 调用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7934479/