ASP.NET 4의 새 라우팅 기능 (MVC가 아닌 웹 양식)을 사용하고 있습니다. 이제 asp : ListView 데이터 원본에 바인딩되어 있습니다. 속성 중 하나는 ListView 항목에서 다른 페이지로 연결하는 데 사용하려는 ClientID
입니다.databound 매개 변수를 사용하여 RouteUrl을 선언적으로 만드는 방법은 무엇입니까?
System.Web.Routing.RouteTable.Routes.MapPageRoute("ClientRoute",
"MyClientPage/{ClientID}", "~/Client.aspx");
된 ClientID = 2가 존재하는 경우 그래서 예를 http://server/MyClientPage/2
에 대한 유효한 URL은 다음과 같습니다 global.asax
에서 나는 경로를 정의했습니다. ListView에 항목에서
<asp:HyperLink ID="HyperLinkClient" runat="server"
NavigateUrl='<%# "~/MyClientPage/"+Eval("ClientID") %>' >
Go to Client details
</asp:HyperLink>
합니다. 일정한 된 ClientID = 2 예를 들어 내가 쓸 수있다 : 나는 경로 표현식 구문과 데이터 바인딩 구문을 결합 할 경우
<asp:HyperLink ID="HyperLinkClient" runat="server"
NavigateUrl="<%$ RouteUrl:ClientID=2,RouteName=ClientRoute %>" >
Go to Client details
</asp:HyperLink>
지금 내가 궁금. 기본적으로 위의
2
상수를
<%# Eval("ClientID") %>
으로 바꾸고 싶습니다. 그러나
<asp:HyperLink ID="HyperLinkClient" runat="server"
NavigateUrl='<%$ RouteUrl:ClientID=<%# Eval("ClientID") %>,RouteName=ClientRoute %>' >
Go to Client details
</asp:HyperLink>
...
이 작동하지 않습니다 ... 순진 방법으로이 일을 :<%# Eval("ClientID") %>
평가하지만, 문자열로 간주되지 않습니다. 여러 가지 따옴표를 사용하여 놀아 보아도 지금까지는 도움이되지 못했습니다 (대부분의 경우 파서 오류).
질문 : 여기에서 달성하려는 모든 일이 가능합니까? 그리고 그렇다면 정확한 방법은 무엇입니까?
미리 감사드립니다.
훌륭합니다. 방금이 솔루션을 사용하여 마크 업을 변경했습니다. 고마워요! – Slauma
참고 : 적어도 C#에서는 NavigateUrl에 'and not "를 사용해야합니다. 예제 1을 1로 복사하면됩니다. – scottheckel