ASP.NET выполняет функцию перед Render () - PullRequest
0 голосов
/ 17 декабря 2011

Наконец-то я нашел решение о том, как вызывать функцию со страницы 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 () ....

ЛЮБОЕ предложение?

1 Ответ

0 голосов
/ 17 декабря 2011

Вместо того, чтобы напрямую вызывать 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
}

Markup:

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

// .NET < 4.0
<a href="<%= Demo() %>/default.aspx">CLICK</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...