Передача объектов на другую страницу с использованием asp.net - PullRequest
2 голосов
/ 05 мая 2011

Я пытаюсь передать объект с одной страницы на другую, используя <asp:hyperlink>, но безуспешно.Я пытался вызвать метод C # и поместить этот объект в сеанс, но потом понял, что нельзя вызывать метод, используя <asp:hyperlink>.Затем я подумал об использовании <asp:linkbutton>, но затем мне нужно открыть новую веб-страницу в новом окне.

Как мне сделать это правильно?Есть ли другие хорошие альтернативы?

Ответы [ 3 ]

5 голосов
/ 05 мая 2011

Тогда я подумал об использовании <asp:linkbutton>, но тогда мне нужно откройте новую веб-страницу в новом окне.

Вам не нужно открывать новое окно ... добавьте это на свою серверную сторону LinkButton handler:

<asp:LinkButton id="btnYourLinkButton" runat="server" 
    OnClick="btnYourLinkButton_Click">Test</asp:LinkButton>

protected void btnLogout_Click(object sender, System.EventArgs e)
{
    var someObject = GetYourDataWithSomeFunction();
    Session["YourData"] = someObject;  // saves to session
    Response.Redirect("yourNewUrl.aspx");
}

Это сохранит значение в Session и перенаправит на новую страницу в том же окне.

EDIT:

Если вам нужно , чтобы открыть в новом окне, сделайте то же самое, что описано выше, но вместо Response.Redirect добавьте на свою страницу вызов javascript window.open, который будет открыт для открытия новое окно:

ScriptManager.RegisterStartupScript(this, this.GetType(), "AUTOOPEN",
    "window.open('yourNewUrl.aspx', '_blank');", true);

При желании вы можете просто добавить вызов ajax в метод click, чтобы настроить сторону сервера Session, а затем инициировать перенаправление на основании завершения вызова ajax.

3 голосов
/ 05 мая 2011

Добавьте объект к Session и перенаправьте на новую страницу. На новой странице проверьте переменную Session для объекта.

1 голос
/ 05 мая 2011

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

Можно добавить объекты в сеанс и извлечь их, как предлагается в других ответах, здесь, но есть проблемы с этим подходом, например, время ожидания сеансов, масштабируемость и т. д.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...