ASP.NET 在 Render() 之前执行函数

发布于 2024-12-21 19:59:31 字数 930 浏览 0 评论 0原文

最后我找到了一些关于如何从 aspx 页面调用函数的解决方案,因为我需要制作动态 url。

我在 Google 上搜索了几个星期,但我没有找到如何使动态路由依赖于当前区域设置,例如:

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)

我的类在 Demo() 函数之前运行......

有什么建议吗?

Finally i found some solution about how to call function from aspx page, couze i needed to make dynamic urls.

Im searching on Google for several weeks, but i didnt found how to make dynamic routing depend of current locale like:

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

I found one solution where i call function from aspx, to check CurrentCulture and print a string.

 <%@ 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>

and on same aspx page i have

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

But now i have problem with my "Move JavaScript at bottom of page, after form tag" Class. On debug mode, i noticed that

protected override void Render(HtmlTextWriter writer)

where my class is, runs before Demo() function....

ANY suggestion ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

若能看破又如何 2024-12-28 19:59:31

不要在函数中直接调用 Response.Write,而是让它返回一个字符串并在需要的地方输出。

如果您只需要调用该函数,则可以丢弃结果。您可以从重写的 Render 函数中调用该函数:函数

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>

Instead of directly calling Response.Write in your function, have it return a string and out put that where needed.

If you simply need to call the function, you can discard the result. You can the call the function from the overridden Render function:

Functions:

public string Demo() {

    CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture;

    string ime = currentCulture.ToString();

    return ime;
}

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

Markup:

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

// .NET < 4.0
<a href="<%= Demo() %>/default.aspx">CLICK</a>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文