ASP.NET делает двойную форму сообщения, один раз на страницу другой URL - PullRequest
1 голос
/ 22 октября 2010

Привет, я использую сторонний инструмент для рассылки новостей, который в конце дает мне HTML-код для размещения формы на моем сайте.

В основном выглядит так

<form action="http://link/subscriber/subscribe.html" method="post">
    <input name="subscribeBoxId" type="hidden" value="XXXX"/>
    <input name="subscribeBoxTitle" type="hidden" value="Subscribe Box"/>
    <input name="isExternal" type="hidden" value="true"/>
    <input name="externalPublicationId" type="hidden" value="XXXX"/>
    <b>Your details: <br /><br />
    <input name="sf_name.firstName_required" value="true" type="hidden" /><br />
...
</form>

Но я хочу добавить свою собственную проверку, прежде чем отправить ее в эту форму на моей странице ASP.NET, а затем отправить ее по этому URL, как это можно сделать, ура!

Ответы [ 2 ]

1 голос
/ 22 октября 2010

Самый простой способ - добавить вызов функции нажатием кнопки «Отправить», например,

OnClick="return MyValidationFunction"

Если вы вернете «true» из этой функции, ваше сообщение появится, если выreturn false он не будет публиковать.

Дополнительная информация

В соответствии с запросом в комментариях ниже приведен очень грубый пример того, что можно сделать.По сути, вы можете сделать любую проверку, какую захотите.Вы также можете сделать это с валидаторами ASP.NET, если вы действительно этого хотите, но вам нужно изменить входные данные на b runat="server", чтобы они работали лучше.

function MyValidationFunction()
{
   var input1 = document.getElementById('myInput');
   if (input1.value == "")
      return false
   else
      return true
}
0 голосов
/ 22 октября 2010

много способов сделать это.способ javascript, такой как @Mitchel Sellers, один.

Вы можете создать свою собственную форму, выполнить обычную проверку asp.net на ней, когда вы будете довольны, создать свой собственный пост http через класс WebRequest и запустить его для значений на целевом сайте.,

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

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


NameValueCollection nameValues = new NameValueCollection();

nameValues.Add("subscribeBoxId", "a");
nameValues.Add("subscribeBoxTitle", "b");
nameValues.Add("isExternal", "c");
nameValues.Add("externalPublicationId", "d");
nameValues.Add("sf_name.firstName_required", "e");

postValues(new Uri("http://somewhere/somePage.aspx"), nameValues);


private static string postValues(Uri target, NameValueCollection nameValues)
{
    string resultData = null;

    HttpServerUtility urlEncoder = new HttpServerUtility();

    string postData = string.Join("&", nameValues.Keys.Cast().Select(key => string.Format("{0}={1}", key, urlEncoder.UrlEncode(nameValues[key]))));


    HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(target);
    httpRequest.Method = "POST";
    httpRequest.ContentLength = postData.Length;
    httpRequest.ContentType = "application/x-www-form-urlencoded";

    StreamWriter myWriter = new StreamWriter(httpRequest.GetRequestStream());
    myWriter.Write(postData);
    myWriter.Close();


    HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse();

    using (StreamReader reader = new StreamReader(httpResponse.GetResponseStream()))
    {
        resultData = reader.ReadToEnd();
        reader.Close();
    }

    return resultData;
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...