2010-10-20 3 views
0

Хорошо, позвольте мне начать с того, что я больше человек MVC. У меня есть набор результатов, который я пытаюсь добавить подкачки. Все, что я действительно хочу, это предыдущая и следующая кнопка на моей странице, которые являются элементами управления Link. Мне нужно, чтобы эти элементы управления отправлялись обратно на одну страницу, но имеют запрос parm, например page = 4. Как добавить эти ссылки? Я вижу свойство PostBackUrl в ссылке. Должен ли я просто использовать Request.Url и использовать его в PostBackUrl? Затем мне нужно выполнить строковые поиски на парме ... это неприятно. Это единственный способ? Я пробовал ViewState, пожалуйста, не предлагайте, чтобы ... это непредсказуемый мусор, насколько мне известно.Параметры формы ASP.NET для ссылок

+0

Вы хотите сделать что-то подобное? http://www.4guysfromrolla.com/articles/021308-1.aspx – Greg

+0

Кроме того, вы буквально означаете, что вам нужен POST или вы хотите ПОЛУЧИТЬ? – Greg

+0

Да - я не вижу необходимости в POST здесь, если вы просто перенаправляете на другой URL-адрес с QS. Вся информация для запроса находится в QS - просто используйте регулярную ссылку с HTTP GET. – RPM1984

ответ

0

Свойство PostBackUrl предназначено для сквозных обратных передач, вы не хотите этого делать.

Если вы хотите использовать POST, вы можете использовать LinkButton, обрабатывать событие click и перегруппировать свой результирующий набор. Что-то вроде

public void BackButton_Click(object sender, EventArgs e) 
{ 
    // Get existing page from session, viewstate, etc 
    // RebindGrid 
} 

Если вы хотите использовать GET, вы можете использовать гиперссылкой и установить свойство NavigateURL на правильный URL. Что-то вроде

int page; 
if(!int.TryParse(Request.QueryString["page"], out page)) 
    page = 1; 

if(page > 1) 
    BackUrl.NavigateUrl = Request.Path + "?page=" + (page-1).ToString(); 
else 
    NextUrl.NavigateUrl = Request.path + "?page=" + (page+1).ToString(); 
// Note: not syntax/bounds checked 

Edit: Возможно, что вы ищете Post-Redirect-Get pattern?

Response.Redirect(HttpContext.Current.Request.Path + query, true); 
+0

То, что я хочу, - это просто сделать сообщение назад, но добавьте парм ... так что и то и другое. – CrazyDart

+0

Я собираюсь отметить вас за ответ, потому что вы дали отличные ссылки и идеи. – CrazyDart

+0

Если у вас есть еще несколько вопросов, я постараюсь помочь. – Greg

0

Вы говорите об ASP.NET Webforms или MVC?

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

0

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

Состояние представления по какой-то причине было пустым каждый раз, поэтому оно не делало мне ничего хорошего. Это приложение DNN, и я не хотел тратить время на выяснение, почему viewstate был испорчен.

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