Если вы хотите использовать только viewstate для отправки данных на следующую страницу, тогда вам следует использовать метод server.transfer()
вместо resposnse.redirect()
.Давайте предположим, что мы хотим передать viewstate
по нажатию кнопки, как показано ниже:
public void btnSer_OnClick(object sender, EventArgs e)
{
ViewState["yourvalue"] = "Name";
ViewState["yourcity"] = "Shimla";
Server.Transfer("Default.aspx");
}
на той же странице создать метод класса statebag
public StateBag ReturnViewState()
{
return ViewState;
}
Теперь настраница, на которую вы хотите перевести, пусть здесь будет Default.aspx.Поместите следующую функцию в файл Default.aspx.cs
private StateBag PreviousPageViewState
{
get
{
StateBag returnValue = null;
if (PreviousPage != null)
{
Object objPreviousPage = (Object)PreviousPage;
MethodInfo objMethod = objPreviousPage.GetType().GetMethod("ReturnViewState");//System.Reflection class
return (StateBag)objMethod.Invoke(objPreviousPage, null);
}
return returnValue;
}
}
Теперь давайте найдем значения viewstate
предыдущей страницы (ViewState["yourvalue"]
и ViewState["yourcity"]
)
сделать это при загрузке страницы Default.aspx
protected void Page_Load(object sender, EventArgs e)
{
if (PreviousPage != null && PreviousPageViewState != null)
{
var sg = PreviousPageViewState["yourvalue"].ToString();
var nev = PreviousPageViewState["yourcity"].ToString();
}
}
Итак, все готово.Вы можете получить доступ к значению viewstate
на предыдущей странице.