Изменение URL в форме ASP.NET с мастер-страницами - PullRequest
0 голосов
/ 14 января 2010

У нас было требование от клиента переместить сайт, работающий в его собственном домене, в подпапку другого приложения.

Я достиг этого, используя прокси перезаписи ISAPI.

Однако есть одна форма, которая отправляет сообщение обратно на сайт. Сгенерированный URL для действия из ASP.NET: "/ sign-up.aspx?" . Это отправляет обратную запись в корень сайта.

Я хочу изменить это на "sign-up.aspx?" (без косой черты). Это было бы хорошо, если бы я не использовал мастер-страницы, поскольку я мог получить ссылку на форму и изменить ее действие (это .NET 3.5 SP1). Я пытался использовать следующий код в моем элементе управления, чтобы получить ссылку на форму, но, похоже, он ничего не делает. Он находит форму, но для действия не задано значение.

        HtmlForm form = ControlLocator.FindControl<HtmlForm>(Page.Master.Master, "form1");
        form.Action = "sign-up.aspx?";

Это в Page_Load и ControlLocator.FindControl является портом этого http://www.west -wind.com / Weblog / posts / 5127.aspx

Есть идеи?

Cheers, Rob

Ответы [ 4 ]

4 голосов
/ 29 мая 2012

Хорошо, чтобы решить вашу проблему. Но для тех, кто хочет изменить URL-адрес действия aspnetform, используйте этот простой код в событии Page_Load (даже если у них есть главная страница).

protected void Page_Load(object sender, EventArgs e)
{
    this.Form.Action = "URL Goes Here";
}
1 голос
/ 14 января 2010

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

<asp:button id="SignUpBtn" 
            runat="server"
            postbackurl="sign-up.aspx" 
            value="Sign Up" />

Дополнительную информацию можно найти в разделе «Размещение на нескольких страницах на веб-страницах ASP.NET» .

1 голос
/ 14 января 2010

Вы пытались сделать это в page_prerender?

Возможно, все объединение основного контента еще не было выполнено в page_load. Предполагая, что HtmlForm является правильным типом, и что форма на самом деле называется 'form1' - я уверен, что это правильно.

0 голосов
/ 17 января 2010

В конце концов выяснилось, что это был Form.browser от umbraco, который переписывал URL-адрес поста после того, как я изменил его. (Извиняюсь за то, что не упомянул об использовании umbraco в моем первоначальном вопросе).

...