Asp.net mvc 5 Sitefinity 8.1 MVC连字符问题

Asp.net mvc 5 Sitefinity 8.1 MVC连字符问题,asp.net-mvc-5,sitefinity,Asp.net Mvc 5,Sitefinity,我对sitefinity应用程序有问题。我正在使用SiteFinity8.1附带的MVC5。我的问题是,当我在actionresult名称中使用连字符时,我收到一个404错误请求 [ActionName("some-thing")] public ActionResult PersonalChecking(string prodid = null) { var model = new OACWidgetModel(); return Vi

我对sitefinity应用程序有问题。我正在使用SiteFinity8.1附带的MVC5。我的问题是,当我在actionresult名称中使用连字符时,我收到一个404错误请求

    [ActionName("some-thing")]
    public ActionResult PersonalChecking(string prodid = null)
    {
        var model = new OACWidgetModel();

        return View(model);
    }

任何帮助都将不胜感激。

请尝试路由属性,而不是ActionName属性

[Route("some-thing")]
public ActionResult PersonalChecking(...)
{...}

我终于明白为什么它不起作用了。 显然,Sitefinity要求为操作名称中的特殊字符启用EnableBackardCompatibilityFormageSurls

要启用此功能,请转到管理->设置->高级->页面,选中名为EnableBackardCompatibilityForPageSurls的复选框,然后按保存更改按钮


修正了!:)

感谢您的回复,确实actionName在MVC5中不起作用。这也许可以解释为什么代码在SiteFinity7中工作。我试过你的建议,但当我请求localhost:80/somepagename/something时,我还是得到了404。我发现这篇文章展示了RelativeRoute的使用,但这似乎也不起作用。文章说,当使用RelativeRoute时,不需要调用MapMVCatributeRoutes。有什么想法吗?只是想确认一下,somepagename页面是否确实包含MVC小部件?小部件是否有索引方法?它是否在初始加载页面时被调用?你能在PErsonalChecking方法中设置一个断点,看看它是否也被调用。是的,页面上确实有这个小部件。是的,当我以调试模式加载页面时,我可以使索引操作正常工作。所有不包含连字符的操作似乎都可以正常工作。调试器甚至显示该操作被捕获,并且它执行其中的所有代码。它甚至返回视图。但页面仍以404响应。见下文。详细错误信息:模块ManagedPipelineHandler通知执行器请求处理程序ASP.sfpageservice\U 82fceb89\U 482c\U 60e9\U 9cca\U ff0000fbfb2a\U notheme\U aspx错误代码0x00000000