【问题标题】:How to call controller method from ActionLink of MVC in Umbraco 7?如何在 Umbraco 7 中从 MVC 的 ActionLink 调用控制器方法?
【发布时间】:2016-07-04 23:56:03
【问题描述】:

我正在开发 Umbraco 7 应用程序。 其中有一个控制器,我试图从我的视图中调用它的方法。 但是当我从 ActionLink 调用该方法时,它说找不到方法。 当我从它说的 URL 验证这一点时,这是错误的。 以下是sn-ps的代码:

下面是 MVC 行:

   @Html.ActionLink("Send OTP", "Index", "RegisterSurface", new { id = "lnkSendOTP" })

以下是MVC控制器方法

public ActionResult Index()
    {
        return View();
    }

我在屏幕上出现以下错误,我也无法理解 URL 格式

enter image description here

【问题讨论】:

    标签: asp.net-mvc umbraco7


    【解决方案1】:

    您似乎使用了错误的 ActionLink 方法重载:

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

    你想改用这个:

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

    尝试传递一个额外的 null 参数以使用正确的重载:

    @Html.ActionLink("Send OTP", "Index", "RegisterSurface", null, new { id = "lnkSendOTP" })
    

    【讨论】:

    • 你看到附图了吗??? URL 格式看起来错误,这就是它找不到控制器方法的原因。
    • 是的,我看到了图片。 “?Length=15”被添加到 URL 中,因为 ActionLink 方法将您的控制器名称参数视为 object 而不是 string(“RegisterSurface”长度为 15 个字符)。 This question 提供了有关该问题的更多信息。
    • 尝试了您的解决方案,仍然没有运气............我不明白,URL 是 'Umraco/Surface/RegisterSurface'。应该是'Umbraco/RegisterSurface/Index'........否则它会如何找到控制器方法。
    • 还有一件事......我的解决方案中的RouteConfig 没有被调用。甚至 global.asax 也没有受到打击。
    • 我认为“Surface”被包括在内,因为这正是 Umbraco 处理表面控制器路由的方式。此外,“索引”将从 URL 中删除,因为它是默认操作。您能否尝试将您的方法重命名为其他名称,看看是否有帮助?如果这不起作用,您的 RouteConfig 中是否有任何自定义路由可能会干扰 Umbraco?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    相关资源
    最近更新 更多