2011-12-17 92 views
0

最後,我找到了一些關於如何從aspx頁面調用函數的解決方案,我需要製作動態url。Render()之前的ASP.NET執行函數

IM在谷歌搜索了幾個星期,但我沒有找到如何使動態路由取決於當前語言環境的,如:

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

我找到了一個解決方案,我稱之爲功能從ASPX,檢查的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> 

但現在我有我的「移動的JavaScript在頁面底部,形成標籤之後」類的問題。在調試模式,我注意到,

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 
} 

標記:

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

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

這讓我對CLICK行一些錯誤,編譯器錯誤信息:CS1026:)期待您可以從覆蓋Render函數調用的函數。 p.s這是webforms,而不是mvc – 2011-12-18 11:07:33

+0

@NovkovskiStevoBato - 您使用的是什麼版本的.NET? 'Demo'返回一個字符串? – Oded 2011-12-18 11:15:05

+0

4.0是的,Demo()返回字符串。我的Demo()與你在這裏寫的相同 – 2011-12-18 11:24:53

相關問題