2010-06-11 3 views
2

У меня есть одно приложение, в котором я хочу передавать данные между страницами (представлениями) без сеансов. На самом деле я хочу применить некоторые настройки ко всем страницам с помощью строки запроса. Например, если моя ссылка похожа на «http://example.com?data=test1», то я хочу добавить эту строку запроса ко всей ссылке после нее и если нет строки запроса, а затем нормального потока.Как передать данные между страницами без сеансов в ASP.net MVC

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

Спасибо, Ashwani

ответ

2

Вы можете получить строку запроса с помощью

Request.Url.Query 

и на ссылки на другую страницу вы можете отправить его.

Вот идея о том, как вы можете найти и изменить свою страницу:

public abstract class BasePage : System.Web.UI.Page 
{ 
    protected override void Render(System.Web.UI.HtmlTextWriter writer)  
    { 
     System.IO.StringWriter stringWriter = new System.IO.StringWriter(); 

     HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter); 

     // now you render the page on this buffer 
     base.Render(htmlWriter); 

     // get the buffer on a string 
     string html = stringWriter.ToString(); 

     // manipulate your string html, and search all your links (hope full find only the links) 
     // this is a simple example of replace, THAT PROBABLY not work and need fix   
     html = html.Replace(".aspx", ".aspx?" + Request.Url.Query); 

     writer.Write(html); 
    } 
} 

Я не предлагаю это, как всегда, и я думаю, что вы должны найти какой-то другой способ, чтобы избежать манипулировать все ссылки ...

+0

Спасибо. Но проблема в том, что на странице может быть много ссылок, и я хочу передать значение строки запроса на все страницы. Есть ли способ установить какое-то свойство, доступ к которому можно получить через страницы? –

+0

@Ahwani Я могу думать несколько способов ... хм, может быть, если вы получите окончательный визуализатор страницы и измените все ссылки ... Мне не нравится эта идея .. но ... – Aristos

+0

Да, я тоже думал об этом , Но проблема в том, что ссылки генерируются динамически. Разве у нас нет какой-то собственности, которая может быть разделена между представлениями? –

0

Я не знаю, какие данные вы пытаетесь передать. Потому что мне кажется странным идея захватить все ссылки.

Во всяком случае, я полагаю, вы можете найти класс TempData полезные для передачи данных между переадресовывает.

И последнее предупреждение, будьте осторожны о TempData, оно немного изменилось между MVC 1 и 2:
ASPNET MVC2: TempData Now Persists

+0

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

Смежные вопросы