无法使MVC 5属性路由工作

时间:2015-02-03 20:16:50

标签: c# asp.net-mvc-5

我正在使用C#后端开发MVC5应用程序。我正在尝试将更改/Controller/Action?parameter=value显示为/Controller/Action/Value

目前我在页面设置上有一个操作链接,希望能够查看用户的个人资料信息:

@{ var test = new RouteValueDictionary {{"username", "testman"}}; }

  <h2>@ViewBag.Title</h2>
  <div class="row">
    <div class="col-md-2" style="border-right:1px solid #EEE; min-height: 250px;">
        Sidebar 1
    </div>
    <div class="col-md-8">
        <a href="@Url.Action("Test","Home",test)">test link</a>
    </div>
    <div class="col-md-2" style="border-left:1px solid #EEE; min-height: 250px;">
        Sidebar 2
    </div>
</div>

这是行动:

[RequireRequestValue(new[] { "username" })]
[Route("Test/{username}")]
public ActionResult Test(string username)
{
    var route = RouteData.Route;
    try
    {
        ViewBag.Page = 9;
        ViewBag.Title = "Testing";
        ViewBag.Message = username;

        return View();
    }
    catch (Exception ex)
    {
        var error = new HandleErrorInfo(ex, "Home", "Test");
        ViewBag.errorMessage = ex.Message;

        return View("Error", error);
    }
}

我已将routes.MapMvcAttributeRoutes();添加到我的RouteConfig.cs文件中。

如果我没有将[Route("Test/{username}")]属性添加到我的操作中,则链接呈现如下:Home/Test?username=testman。如果我添加属性链接呈现我喜欢:Home/Test/testman

不幸的是,当我点击链接时,我收到此服务器500错误,这就是我被困住的地方:

No matching action was found on controller '<project>.Controllers.HomeController'.
This can happen when a controller uses RouteAttribute for routing, but no action on 
that controller matches the request.

为了好玩,我甚至尝试创建一个明确的ActionResult,看看我是否能得到不同的东西,但那里没有运气。

我显然缺少某些东西......任何人都可以帮助我走上正轨吗?

谢谢!

0 个答案:

没有答案