我正在使用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,看看我是否能得到不同的东西,但那里没有运气。
我显然缺少某些东西......任何人都可以帮助我走上正轨吗?
谢谢!