2011-12-17 53 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

相关问题