ASP .NET - Кэширование подстановки и вывода страницы (пончик) - Как передать пользовательский аргумент делегату HttpResponseSubstitutionCallback - PullRequest
5 голосов
/ 28 марта 2010

Я хотел бы использовать функцию подстановки кэширования пончиков.

public static string GetTime(HttpContext context)
{
    return DateTime.Now.ToString("T");
}

...

The cached time is: <%= DateTime.Now.ToString("T") %>
<hr />
The substitution time is:
<% Response.WriteSubstitution(GetTime); %>

... Но я бы хотел передать дополнительный параметр в функцию обратного вызова рядом с HttpContext.
так что вопрос:
Как передать дополнительный аргумент в обратный вызов GetTime?
например, что-то вроде этого:

public static string GetTime(HttpContext context, int newArgument)
{
    // i'd like to get sth from DB by newArgument
    // return data depending on the db values

    // ... this example is too simple for my usage
    if (newArgument == 1)
        return "";
    else
        return DateTime.Now.ToString("T");
}

Ответы [ 2 ]

2 голосов
/ 17 июня 2010

В противном случае, если ваша проблема заключается в том, что вы хотите иметь разные выходные данные, основанные на разных аргументах, потому что вы используете подстановку выходных данных в разных местах на вашем сайте, я боюсь, что единственный способ - это либо определить разные функции, либо использовать методы замещения только в качестве заглушки для фактического метода с аргументами.

1 голос
/ 06 июня 2010

Ну, вы можете сохранить любой аргумент, который вам нужен в сеансе. В методе GetTime эти аргументы могут быть доступны через HttpContext.

...