簡體   English   中英

在單獨的類中獲取C#Request.Form

[英]Getting C# Request.Form in a separate class

我正在編寫一個C#助手來解析HTML POST並創建一個簽名字符串。 該字符串用於輔助形式的隱藏輸入。 如何在靜態C#方法中訪問Request.Form字段? HttpWebResponse 使用System.Web.UI.Page

public static string cyberSourceCheckoutHtml()
{
    List<string> _string = new List<string>();
    IDictionary<string, string> parameters = new Dictionary<string, string>();
    try
    {
        if (Request.Form.AllKeys.Length > 0)
        {
            foreach (var key in form.AllKeys)
            {
                _string.Add("<input type=\"hidden\" id=\"" + key + "\" name=\"" + key + "\" value=\"" + Request.Params[key] + "\"/>\n");
                parameters.Add(key, Request.Params[key]);
            }
        }
        string sig = Corbis.Web.UI.CheckoutV2.Helpers.CybersourceSecureAcceptance.sign(parameters); 
        _string.Add("<input type=\"hidden\" id=\"signature\" name=\"signature\" value=\"" + sig + "\"/>\n");
        //<form action="https://testsecureacceptance.cybersource.com/silent/pay" method="post"/>
        return _string.ToString(); 
    }
    catch
    {
        return "";
    }
}

您有2個選擇:

  • 將與網絡相關的數據放入與非網絡相關的類中的一種更清潔,更可取的選擇是將它們作為其非網絡類型傳遞。

例如,Request.Form數據只不過是一個NameValueCollection。 這樣你就可以像

public static string cyberSourceCheckoutHtml(NameValueCollection formData)
{
 // use formData instead of Request.Form
}
  • 選項#2是使用System.Web命名空間中提供的Static Helper屬性來訪問請求。

    NameValueCollection formData = HttpContext.Current.Request.Form;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM