我正在开发电子商务网站。在最后,我需要集成我使用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";
}
答案 0 :(得分:0)
使用母版页时,控件的name
和id
会重命名为这样的内容。
<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;
?