получение Request.RawUrl в строковую переменную в <script type = "text / c #"> - PullRequest
0 голосов
/ 20 января 2012

На странице ASP.NET MVC aspx у меня есть следующий скрипт:

<script type="text/c#" runat="server">
    string rl = Request.RawUrl;
</script>

Request подчеркивается в Visual Studio со следующей ошибкой: Ссылка на объект требуется для нестатического метода, поля или свойства System.Web.UI.Page.Request.get

Однако это: <%=Request.RawUrl%> отлично работает.

Подскажите, пожалуйста, как я могу получить RawUrl в строковую переменную rl в скрипте? Спасибо!

Это продолжение Как сделать переменную на странице aspx видимой для нескольких разделов контента на этой странице в ASP.NET MVC?

Я в основном пытаюсь объявить объект на странице и ссылаться на него в разных частях страницы.

1 Ответ

5 голосов
/ 20 января 2012

Вот так:

<%
    string rl = Request.RawUrl;
%>

или в вашем конкретном случае:

<script type="text/C#" runat="server">
    string rl = HttpContext.Current.Request.RawUrl;
</script>

UPDATE:

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

public static class HtmlExtensions
{
    public static string GetSomeValue(this HtmlHelper htmlHelper)
    {
        var context = htmlHelper.ViewContext.RequestContext.HttpContext;
        var value = context.Items["__some_key__"] as string;
        if (value != null)
        {
            // the value was found in the HTTP context => no need
            // to recalculate it
            return value;
        }

        value = ... do some expensive calculation to fetch the value
        // store the value in the HTTP context so that the next time
        // someone calls this helper from within the current HTTP context
        // doesn't need to perform the expensive operation
        context.Items["__some_key__"] = value;
        return value;
    }
}

и затем, когда вам нужно где-то значение:

<%= Html.GetSomeValue() %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...