У меня есть страница asp (Default.aspx), которая отображает разницу между двумя текстовыми файлами. Он содержит два раскрывающихся списка (ID = "File1" и "File2" соответственно) и кнопку (ID = "Submit").
Он также содержит элемент управления Literal с идентификатором «Результат».
Содержимое кнопки списка заполняется на основе файлов, присутствующих в физическом пути приложения.
Каждый раз, когда нажимается кнопка отправки, я хочу дать результат сравнения / сравнения в элементе управления Literal, поэтому у меня есть обработчик событий, подобный этому:
protected void Submit_Click(object sender, EventArgs e)
{
Result.Text = CompareFiles(File1.SelectedValue, File2.SelectedValue);
}
Проблема в том, что вы не можете добавить в закладки результаты сравнения между конкретными файлами.
Чтобы решить эту проблему, я добавил значения файлов, выбранных для сравнения, в качестве строки запроса к URL-адресу и выполнил перенаправление. И поэтому изменил вышеописанный обработчик событий, чтобы он выглядел так:
protected void Submit_Click(object sender, EventArgs e)
{
string build1 = DropDownList1.SelectedValue;
string build2 = DropDownList2.SelectedValue;
string queryString =
String.Format("?file1={0}&file2={1}",HttpUtility.UrlEncode(build1),HttpUtility.UrlEncode(build2));
string redirectionUrl = Request.Url.AbsolutePath + queryString;
Response.Redirect(redirectionUrl, true);
}
Соответственно вызывается метод «CompareFiles» в обработчике события «Page_Load». Теперь вы можете добавить в закладки результаты сравнения и загрузить их снова напрямую, поскольку URL-адрес будет содержать файлы для сравнения.
Но проблема в том, что свойство IsPostBack имеет значение false каждый раз, когда происходит перенаправление. Поэтому значения DropDownLists (файлы, присутствующие в каталоге физического приложения) оцениваются каждый раз.
Я не хочу, чтобы это происходило, если это перенаправление с той же страницы. Как я могу это сделать? Я хочу, чтобы это происходило только в том случае, если к странице обращаются впервые или к какой-либо другой странице.
Это плохая практика? Я имею в виду перенаправление на ту же страницу. Я могу избежать этой проблемы, предоставляя результаты на другой странице, но я хочу сделать это так, потому что я хочу, чтобы DropDownLists и кнопки «Отправить» всегда были там.