Html.ActionLink解析控制器

时间:2016-01-13 18:49:50

标签: c# asp.net-mvc visual-studio-2010

此行位于MVC.Net 4.0 Razor视图中:

@Html.ActionLink("Name Of File", "OpenDocument", new { path = Model.Document.path })

但是,这个视图的控制器(让它称之为FileController)没有任何名为" OpenDocument"的函数。

另一个控制器(让它称之为DocumentController)确实具有" OpenDocument"。

在本地跑步(视觉工作室),神奇的东西"解决"控制器使用和它的工作。但是,在另一台服务器上它崩溃了,因为它没有找到内部的功能" FileController"。

根据我对@ Html.ActionLink的理解,如果你没有指定控制器名称,它需要表格的控制器...我错了吗?

MVC.Net应用程序中的哪些配置可以做到这一点?

由于

2 个答案:

答案 0 :(得分:1)

是的,如果您使用的overload仅包含链接名称,操作名称和路由值,它将在当前控制器内查找为其呈现当前视图的操作名称。< / p>

但您可以使用Html.ActionLink的{​​{3}},您也可以在其中明确指定控制器名称。

public static MvcHtmlString ActionLink(
    this HtmlHelper htmlHelper,
    string linkText,
    string actionName,
    string controllerName,
    object routeValues,
    object htmlAttributes
)

因此,生成链接的代码将是

@Html.ActionLink("Name Of File", "OpenDocument", "Document",
                                               new { path = Model.Document.path },null)

答案 1 :(得分:0)

我非常确定ActionLink没有执行提交,所以基本上你需要指定要识别的控制器。如果错了,有人会纠正我。

通常我使用ajax的动作链接来发送我的数据。