2011-12-17 3 views
0

마지막으로 저는 aspx 페이지에서 함수를 호출하는 방법에 대한 해결책을 찾았습니다. 나는 동적 URL을 만들어야했습니다.ASP.NET은 Render() 전에 함수를 실행합니다.

임은 몇 주 동안 구글에서 검색,하지만 난 동적 라우팅을 만드는 방법을 발견 didnt한다

같이 현재 로케일의 의존 :

site.com/en/home - when CurrentCulture is en-EN and 
site.com/fr/home - When CurrentCulture is fr-FR. 

내가 CurrentCulture 및 인쇄를 확인, 영문에서 함수를 호출 한 해결책을 발견 문자열.

<%@ Import Namespace="System.Globalization" %> 
<%@ Import Namespace="System.Threading" %> 
<script runat="server"> 
void Demo() { 

    CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture; 

    string ime = currentCulture.ToString(); 

    Response.Write(ime); 
}</script> 

과 같은 aspx 페이지에

나는

<a href="<% Demo(); %>/default.aspx">CLICK</a> 

을하지만 지금은 내 "양식 태그 후, 페이지 하단에 자바 스크립트를 이동"클래스에 문제가 있습니다. 디버그 모드에서, 나는 ....

어떤 제안

내 수업은
protected override void Render(HtmlTextWriter writer) 

는, 데모() 함수 전에 실행되는 것으로 나타났습니다?

답변

0

함수에서 Response.Write을 직접 호출하는 대신 문자열을 반환하고 필요한 곳에 넣습니다.

함수를 호출하기 만하면 간단히 결과를 버릴 수 있습니다.

기능 :

public string Demo() { 

    CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture; 

    string ime = currentCulture.ToString(); 

    return ime; 
} 

protected override void Render(HtmlTextWriter writer) 
{ 
    Demo(); 
    // rest of code 
} 

는 마크 업 : CS1026 :

// .NET 4.0 
<a href="<%: Demo() %>/default.aspx">CLICK</a> 

// .NET < 4.0 
<a href="<%= Demo() %>/default.aspx">CLICK</a> 
+0

그것은 좀 CLICK 행에 오류, 컴파일러 오류 메시지가 표시) 예상 당신은 재정의 된 Render 기능에서 함수를 호출 할 수 있습니다 . p.s 이것은 MVC가 아닌 webform입니다. –

+0

@NovkovskiStevoBato - 어떤 버전의 .NET을 사용하고 있습니까? 'Demo'가 문자열을 반환합니까? – Oded

+0

4.0이고 예, Demo()는 문자열을 반환합니다. 내 데모()가 여기에 쓴 것과 동일합니다 –

관련 문제