为什么我的ASP.NET MVC路由配置导致HTTP 404错误?

时间:2014-07-12 14:17:31

标签: c# asp.net-mvc routing

问题出现在我添加到RouteConfig.cs文件中的地图路线上,该路线将路线映射到我的Topic控制器。

这是我的RegisterRoutes方法,来自global.asax:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
    name: "ArticleByTitle",
    url: "{controller}/{action}/{title}/{category}",
    defaults: new { controller = "Topic", action = "Get", category = UrlParameter.Optional }
);

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

Topic控制器包含指定的操作方法:

namespace Wiki.Controllers
{
    public class TopicController : Controller
    {
        public ActionResult Get(string title, string category)
        {
            var topics = this.GetTopicsList();
            var count = topics.Count(t => t.Category.Equals(category, StringComparison.CurrentCultureIgnoreCase)
                                          && t.Title.Equals(title, StringComparison.CurrentCultureIgnoreCase));
            if (count > 1)
            {
                return RedirectToAction("Resolve", new { title = title });
            }

            if (count == 0)
            {
                return new HttpNotFoundResult();
            }

            var selectedTopic = this.GetTopicsList().FirstOrDefault(t => t.Title.Equals(title, StringComparison.CurrentCultureIgnoreCase));
            return RedirectToAction("Display", new { topic = selectedTopic });
        }

    }
}

但是,永远不会调用此方法。相反,当我尝试通过应用程序中的链接到达它时,我收到HTTP 404错误,如下所示:

<a href="/topic/display/MyTopic">MyTopic</a>

我假设我的路由配置有问题,但对于我的生活,我看不出它是什么。有人可以指出我正确的方向吗?

3 个答案:

答案 0 :(得分:1)

要调用Get操作,您的网址必须如下所示:

<a href="/topic/get/mytitle/mycategory"></a>

您还应该使用Html ActionLink助手生成链接,如下所示:

@Html.ActionLink("MyTopic", "Get", "Topic", new { title = "sometitle"}, null)

答案 1 :(得分:1)

您的href似乎错过了您的行动(在您的情况下是Get

答案 2 :(得分:0)

尝试使用以下语法

action="@Url.Action("Go", "Home")" 

用于您的HREF链接。