2016-04-15 2 views
2

После много исследований все еще у меня нет ответа.Server.Transfer не работает

Я использую WebForm приложение VS 2013.

Мой код является довольно простым:

Server.Transfer("~/Success.aspx",true); 

После этого события нагрузка Success.aspx выполняется, но в браузере я только посмотреть оригинал Основной вид.

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

Server.Transfer("~/WebForm2.aspx",true); 

еще я вижу MainForm.aspx (Page_Load обработчик события WebForm2 работает)

== ========================

Обновление по комментариям Ирландии.

У меня действительно есть aJax в моем коде. У меня есть UpdatePanels, которые используют Ajax.If это проблема для server.Transfer, как мы можем решить это?

+1

Вы вызываете это на странице с поддержкой AJAX? – IrishChieftain

+0

Я так не думаю. Как я могу это проверить? –

+2

Не пытайтесь найти решение, лучше использовать другой способ дизайна вашей страницы. Server.Transfer отлично, но если вы не можете понять, что на самом деле делать, то избегайте этого.И в большинстве случаев не может работать со сложными страницами, не может делать некоторые из сообщений обратно ... простой, найти другой путь - Server.Transfer работает - но то, что сделано не то, что вы ожидаете ... – Aristos

ответ

1

Наконец-то я нашел решение. Спасибо всем за вашу помощь (+1 для всех, кто дал мне идею).

Так вот мой код:

CS: Server.Transfer("~/Success.aspx",false);

HTML:

<div id="submit">     
        <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" UseSubmitBehavior="False" />     

</div> 

Как уже упоминалось кнопку Submit был внутри панели обновления. В этом случае необходимо использовать следующий код:

<Triggers> 
     <asp:PostBackTrigger ControlID="btnSubmit" /> 
    </Triggers> 

Этот код в основном делает выполнение кнопки отправки Synchronous (переопределяет Update-панели поведения).

1

Не видя большой части кода, трудно отладить эту проблему. Вместо этого используйте функцию Response.Redirect.

Response.Redirect("~/Success.aspx"); 
+0

его предложение, но не ответ на вопрос. – Aristos

+0

ОП не задал вопрос. Он также не упомянул, что Response.Redirect не может быть использован из-за бизнес-правила (я не уверен, какое бизнес-правило было бы). Response.Redirect обычно обрабатывает то, что он запрашивал. Токтор также имел аналогичный ответ, учитывая ограниченную информацию, представленную в первоначальном сообщении. –

+0

Доктор дает ответ, вы отвечаете другим вопросом ... – Aristos

2

Я не думаю, что вы понимаете, что Server.Transfer().

Он временно перенаправляет код для запуска кода на второй странице .., но после завершения возвращается к исходной странице. Вполне возможно, что браузер не получит (или не видит) html со второй страницы.

https://msdn.microsoft.com/en-us/library/ms525800(v=vs.90).aspx См

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

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