GetRouteUrl在代码后面返回正确的url但在.aspx中为null

时间:2014-08-04 18:01:52

标签: asp.net webforms url-routing asp.net-4.5

我可以在代码隐藏文件中正确获取URL,但同一语句在内联语句中不返回任何内容。

这是我的RegisterCustomRoutes方法的一部分,它在Application_Start中执行:

void RegisterCustomRoutes(RouteCollection routes) {
     // Student list route
     routes.MapPageRoute(
          "StudentListRoute",
          "Course/{courseId}/Students",
          "~/path/to/page.aspx");

      // Course details route
      routes.MapPageRoute(
          "CourseDetailsRoute",
          "Course/{courseId}",
          "~/path/to/otherpage.aspx");

      ... some other route declarations
}

然后,在我的一个.aspx页面中,我有以下内联语句:

<a href="<%# GetRouteURL("CourseDetailsRoute", new { courseId = 1}) %>">Some text</a>

我希望生成的网址为:

/Course/1

相反,不返回任何内容(null或string.Empty)。同样,我已经确认此语句在代码隐藏文件中正确返回所需的URL。

1 个答案:

答案 0 :(得分:1)

我的内联声明使用&lt;%#...%&gt;标签,保留用于数据绑定目的。将我的内联语句更改为,

<a href="<%: GetRouteUrl("RouteName", new { param = paramValue }) %>">Anchor text</a>

解决了我的问题。