我在ASP.Net MVC 5中的控制器上有以下操作:
[Route("Sprache/{languageName}/Kurs/{courseName}/Text/{value}/Test/{referenzID}", Name = "Textauswahl")]
public ActionResult SelectedText(string languageName, string courseName, string value, string referenzID)
{
return View("ShowTextView");
}
但是,当我尝试通过以下方式生成链接时,它始终为空。
<a href="@Url.RouteUrl("Textauswahl", new { Model.Training.LanguageName, Model.Training.CourseName, Model.Training.Category ,item })">Auswählen</a>
这是我的RouteConfig:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
答案 0 :(得分:0)
来自Url.RouteUrl
的空响应表示没有路由与您提供的参数匹配。传递路由名称只会将匹配条件缩小到特定路由,但所有路由值仍必须存在(显式传递或在当前HTTP请求中传递),以便生成URL。
请注意,您使用的语法不正确。传递给RouteUrl
的值必须包含键和值,或者传递的变量名称必须与路径中使用的路径键匹配。
<a href="@Url.RouteUrl("Textauswahl", new {
languageName = Model.Training.LanguageName,
courseName = Model.Training.CourseName,
value = Model.Training.Category,
referenzID = item })">Auswählen</a>