zoukankan      html  css  js  c++  java
  • ASP.NET中POST提交数据并跳转页面

    需求:先Post提交数据,然后跳转到目标页面

    找了好久才发现这个神奇的类HttpHelper。原理很简单,利用html的from表单拼接,然后执行

    使用方法:

         NameValueCollection data = new NameValueCollection();
            data.Add("v1", "val1");
            data.Add("v2", "val2");
            HttpHelper.RedirectAndPOST(this.Page, "2.aspx", data);

    HttpHelper类:

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Net;
    using System.Collections.Specialized;
    using System.Text;
    
    /// <summary>
    /// Summary description for HttpHelper
    /// </summary>
    /// <Author>Samer Abu Rabie</Author>
    public static class HttpHelper
    {
        /// <summary>
        /// This method prepares an Html form which holds all data in hidden field in the addetion to form submitting script.
        /// </summary>
        /// <param name="url">The destination Url to which the post and redirection will occur, the Url can be in the same App or ouside the App.</param>
        /// <param name="data">A collection of data that will be posted to the destination Url.</param>
        /// <returns>Returns a string representation of the Posting form.</returns>
        /// <Author>Samer Abu Rabie</Author>
        private static String PreparePOSTForm(string url, NameValueCollection data)
        {
            //Set a name for the form
            string formID = "PostForm";
    
            //Build the form using the specified data to be posted.
            StringBuilder strForm = new StringBuilder();
            strForm.Append("<form id="" + formID + "" name="" + formID + "" action="" + url + "" method="POST">");
            foreach (string key in data)
            {
                strForm.Append("<input type="hidden" name="" + key + "" value="" + data[key] + "">");
            }
            strForm.Append("</form>");
    
            //Build the JavaScript which will do the Posting operation.
            StringBuilder strScript = new StringBuilder();
            strScript.Append("<script language='javascript'>");
            strScript.Append("var v" + formID + " = document." + formID + ";");
            strScript.Append("v" + formID + ".submit();");
            strScript.Append("</script>");
    
            //Return the form and the script concatenated. (The order is important, Form then JavaScript)
            return strForm.ToString() + strScript.ToString();
        }
        /// <summary>
        /// POST data and Redirect to the specified url using the specified page.
        /// </summary>
        /// <param name="page">The page which will be the referrer page.</param>
        /// <param name="destinationUrl">The destination Url to which the post and redirection is occuring.</param>
        /// <param name="data">The data should be posted.</param>
        /// <Author>Samer Abu Rabie</Author>
        public static void RedirectAndPOST(Page page, string destinationUrl, NameValueCollection data)
        {
            //Prepare the Posting form
            string strForm = PreparePOSTForm(destinationUrl, data);
    
            //Add a literal control the specified page holding the Post Form, this is to submit the Posting form with the request.
            page.Controls.Add(new LiteralControl(strForm));
        }
    }
  • 相关阅读:
    python convert csv to xlsx
    org.openqa.selenium.remote.SessionNotFoundException: The FirefoxDriver cannot be used after quit() was called.
    Selenium webdriver 操作日历控件
    SVN eclipse插件错误
    java.lang.UnsupportedClassVersionError: Unsupported major.minor version 52.0的错误
    如何获取web中某个元素的id
    Selenium 进行web自动化测试
    Navicat远程连接MySQL数据库
    Linux grep命令详解
    Linux awk命令详解
  • 原文地址:https://www.cnblogs.com/webapi/p/5669148.html
Copyright © 2011-2022 走看看