Request.Form在使用母版页时无法正常工作

时间:2017-06-13 12:26:23

标签: c# asp.net master-pages request.form

我正在开发电子商务网站。在最后,我需要集成我使用payuBiz的支付网关。在将Trasaction infromation解析为payu时,我注意到Request.Form值为空&这对我来说是什么造成的问题。如果我不使用母版页,代码也能正常工作。它不能使用母版页。

if (string.IsNullOrEmpty(ConfigurationManager.AppSettings("MERCHANT_KEY"))
|| string.IsNullOrEmpty(txnid1) 
|| string.IsNullOrEmpty(Request.Form(amount.ClientID)) 
|| string.IsNullOrEmpty(Request.Form(firstName.ClientID)) 
|| string.IsNullOrEmpty(Request.Form(email.ClientID)) 
|| string.IsNullOrEmpty(Request.Form(phone.ClientID)) 
|| string.IsNullOrEmpty(Request.Form(productInfo.ClientID)) 
|| string.IsNullOrEmpty(Request.Form(surl.ClientID)) 
|| string.IsNullOrEmpty(Request.Form(furl.ClientID))) {
    //error

    frmError.Visible = true;
    return;
} else {
    string myAmount = amount.Text;
    frmError.Visible = false;
    hashVarsSeq = ConfigurationManager.AppSettings("hashSequence").Split('|');
    // spliting hash sequence from config
    hash_string = "";
    foreach (string hash_var in hashVarsSeq) {
        if (hash_var == "key") {
            hash_string = hash_string + ConfigurationManager.AppSettings("MERCHANT_KEY");
            hash_string = hash_string + Convert.ToString('|');
        } else if (hash_var == "txnid") {
            hash_string = hash_string + txnid1;
            hash_string = hash_string + Convert.ToString('|');
        } else if (hash_var == "amount") {
            hash_string = hash_string + Convert.ToDecimal(Request.Form(hash_var)).ToString("g29");
            hash_string = hash_string + Convert.ToString('|');

        } else {
            hash_string = hash_string + Convert.ToString((Request.Form(hash_var) != null ? Request.Form(hash_var) : ""));
            // isset if else
            hash_string = hash_string + Convert.ToString('|');
        }
    }

    hash_string += ConfigurationManager.AppSettings("SALT");
    // appending SALT
    hash1 = Generatehash512(hash_string).ToLower();
    //generating hash
    // setting URL
    action1 = ConfigurationManager.AppSettings("PAYU_BASE_URL") + "/_payment";


}

1 个答案:

答案 0 :(得分:0)

使用母版页时,控件的nameid会重命名为这样的内容。

<input type="test "name="ctl00$mainContentPane$TextBox1" id="ctl00_mainContentPane_TextBox1">

虽然您确实使用ClientID用于客户端目的(因此名称),例如javascript来获取正确的ID,但在表单帖子中name用于获取值。所以请使用UniqueID

string value = Request.Form[TextBox1.UniqueID];

但为什么不像往常一样使用这些值,例如string value = TextBox1.Text;