Почему моя форма Asp.Net остается пустой, когда я публикую сообщения со страницы на страницу?

StackOverflow https://stackoverflow.com/questions/2433624

  •  19-09-2019
  •  | 
  •  

Вопрос

У меня есть следующий HTML-код

<%@ Page Language="C#" %>

<html>
    <head>
        <title></title>
    </head>
    <body>
        <form id="frmSystem" method="post" action="target.aspx">
            <input id="txtTextField" type="text" />
            <input id="btnPost" value="Submit" onclick="javascript:frmSystem.submit();" type="button" />
        </form>
    </body>
</html>

Целевая страница открывается, но получаемая форма пуста.У меня есть точка останова на моей странице target.aspx, и хотя я вижу форму, ее ключи пусты, и Request["txtTextField"] ничего мне не дает.

Есть подсказки, почему?

Это было полезно?

Решение

Если вы используете ASP.NET MVC, имена входных данных необходимо задавать с помощью атрибута «name», а не «id».

Другие советы

Если вы, как и я, используете ASP.NET 4.5, используйте приведенные ниже подсказки.

  • Отключить автоматические дружественные URL-адреса в проекте веб-формы
    • settings.AutoRedirectMode = RedirectMode.Off;// в RouteConfig.cs
  • если вы можете:
    • удалить action="CILandingPage.aspx" из элемента формы
    • поместите кнопку asp: вместо обычной кнопки
    • набор PostBackUrl="~/CILandingPage.aspx" на вашей кнопке asp:button

больше ресурсов с более подробной информацией, которая была для меня полезна

Вероятно, вы сбрасываете значение формы в обработчиках событий (например, page_load).

Другой вариант — записать данные Request.Form[] в Application_BeginRequest в Global.asax.cs:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    //capture form data and preserve in query string
    if (Request.Form["txtTextField"]!= null)
    {
        Response.Redirect(Request.RawUrl + "?txtTextField=" 
          + Request.Form["txtTextField"]);
    }
    //or preserve in Session variable
    if(Request.Form["txtTextField"]!=null)
    {
        Session["txtTextField"]=Request.Form["txtTextField"];
    }
}

Проблема в том, что данные формы теряются при автоматическом перенаправлении, которое применяется с помощью FriendlyUrls. Если вы храните эти данные как нечто иное, чем данные формы, нет необходимости отключать FriendlyUrls или устанавливать для AutoRedirectMode значение RedirectMode.Off.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top