@Url.RouteUrl 在 ASP.Net MVC 5 中为空

@Url.RouteUrl is empty in ASP.Net MVC 5

我在 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");
}

但是,当我尝试通过以下方式生成 link 时,它始终是空的。

<a href="@Url.RouteUrl("Textauswahl", new { Model.Training.LanguageName, Model.Training.CourseName, Model.Training.Category ,item })">Auswählen</a>

Screenshot from Browser

这是我的路由配置:

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 }
        );
    }
}

来自 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>