CyberSaint Ответов: 2

Скрытое значение поля равно null при первом нажатии кнопки, но имеет значение при втором щелчке fix?


Эй, Там !! я был в такой ситуации у меня есть asp.net веб-страница, на которой у меня есть скрытые поля для платежного шлюза, такие как поля txnid и hash value, теперь, когда я нажимаю на кнопку отправки, он должен предоставлять txnid и хэш-код, но он ничего не предоставляет, я привык видеть вывод, имея поля предупреждений asp.net но я обнаружил, что при первом нажатии кнопки эти поля были пусты, а при втором нажатии кнопки эти поля имеют значения, и все работает нормально..пожалуйста, помогите !!!

код aspx:-
<form class="RegForm"  runat="server" method="post" name="Registration.aspx" id="form1" accept-charset="utf-8" >
        <div id ="frmError" runat="server">
     <span style="color:red">Please fill all mandatory fields.</span>
     <br/>
     <br/>
     </div>


     <!---important field dont remove -->
       <input type="hidden" runat="server" id="key" name="key"  />
     <input type="hidden" runat="server" id="hash" name="hash"   />
           <input type="hidden" runat="server" id="txnid" name="txnid" />
            <input type="hidden" runat="server" id="enforce_paymethod" name="enforce_paymethod" />
            <!---important field dont remove --><pre></form>

. код cs

public partial class Registration : System.Web.UI.Page
   {
       public string action1 = string.Empty;
       public string hash1 = string.Empty;
       public string txnid1 = string.Empty;
       public string url = string.Empty;
       static string constring = ConfigurationManager.ConnectionStrings["PalpConString"].ConnectionString;


       protected void Page_Load(object sender, EventArgs e)
       {


           try
           {

               //set merchant key from web.config or AppSettings
               key.Value = ConfigurationManager.AppSettings["MERCHANT_KEY"];
               //DisplayRadioButton();
               if (!IsPostBack)
               {


                   frmError.Visible = false; // error form

               }
               else
               {
                   //frmError.Visible = true;
               }
               if (string.IsNullOrEmpty(Request.Form["hash"]))
               {
                   btnSubmit.Visible = true;
               }
               else
               {
                   btnSubmit.Visible = false;
               }

           }
           catch (Exception ex)
           {
               Response.Write("<span style='color:red'>" + ex.Message + "</span>");

           }
       }
         // Generating Hash Code for PayuMoney
       public string Generatehash512(string text)
       {

           byte[] message = Encoding.UTF8.GetBytes(text);

           UnicodeEncoding UE = new UnicodeEncoding();
           byte[] hashValue;
           SHA512Managed hashString = new SHA512Managed();
           string hex = "";
           hashValue = hashString.ComputeHash(message);
           foreach (byte x in hashValue)
           {
               hex += String.Format("{0:x2}", x);
           }
           return hex; ;

       }

       protected void btnSubmit_Click1(object sender, EventArgs e)
       {
                   RecordInsertion();
           try
           {
                   string[] hashVarsSeq;
                   string hash_string = string.Empty;
               if (string.IsNullOrEmpty(Request.Form["txnid"])) // generating txnid
               {
                   Random rnd = new Random();
                   string strHash = Generatehash512(rnd.ToString() + DateTime.Now);
                   txnid1 = strHash.ToString().Substring(0, 20);
               }
               else
               {
                   txnid1 = Request.Form["txnid"];
               }
               if (string.IsNullOrEmpty(Request.Form["hash"])) // generating hash value
               {
               if (
                   string.IsNullOrEmpty(ConfigurationManager.AppSettings["MERCHANT_KEY"]) ||
                   string.IsNullOrEmpty(txnid1) ||
                   string.IsNullOrEmpty(Request.Form["amount"]) ||
                   string.IsNullOrEmpty(Request.Form["firstname"]) ||
                   string.IsNullOrEmpty(Request.Form["email"]) ||
                   string.IsNullOrEmpty(Request.Form["phone"]) ||
                   string.IsNullOrEmpty(Request.Form["productinfo"]) ||
                   string.IsNullOrEmpty(Request.Form["surl"]) ||
                   string.IsNullOrEmpty(Request.Form["furl"])

                   )
               {  //remove later
                   frmError.Visible = true;
                   return;
               }

               else
               {
                   //remove later
           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 + '|';
               }
               else if (hash_var == "txnid")
               {
                   hash_string = hash_string + txnid1;
                   hash_string = hash_string + '|';
               }
               else if (hash_var == "amount")
               {
                   hash_string = hash_string + Convert.ToDecimal(Request.Form[hash_var]).ToString("g29");
                   hash_string = hash_string + '|';
               }
               else
               {

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

                   hash_string += ConfigurationManager.AppSettings["SALT"];// appending SALT

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

                   }
               }

               else if (!string.IsNullOrEmpty(Request.Form["hash"]))
               {
                   hash1 = Request.Form["hash"];
                   action1 = ConfigurationManager.AppSettings["PAYU_BASE_URL"] + "/_payment";

               }

               if (!string.IsNullOrEmpty(hash1))
               {
                   hash.Value = hash1;
                   txnid.Value = txnid1;

                   System.Collections.Hashtable data = new System.Collections.Hashtable(); // adding values in gash table for data post
                   data.Add("hash", hash.Value);
                   data.Add("txnid", txnid.Value);
                   data.Add("key", key.Value);
                   string AmountForm = Convert.ToDecimal(amount.Text.Trim()).ToString("g29");// eliminating trailing zeros
                   amount.Text = AmountForm;
                   data.Add("amount", AmountForm);
                   data.Add("firstname", firstname.Text.Trim());
                   data.Add("email", email.Text.Trim());
                   data.Add("phone", phone.Text.Trim());
                   data.Add("productinfo", productinfo.Text.Trim());
                   data.Add("surl", surl.Text.Trim());
                   data.Add("furl", furl.Text.Trim());
                   data.Add("lastname", lastname.Text.Trim());
                   data.Add("curl", "");
                   data.Add("address1", address1.Text.Trim());
                   data.Add("address2", address2.Text.Trim());
                   data.Add("city", city.Text.Trim());
                   data.Add("state", state.Text.Trim());
                   data.Add("country", "");
                   data.Add("zipcode", zipcode.Text.Trim());
                   data.Add("udf1", "");
                   data.Add("udf2", "");
                   data.Add("udf3", "");
                   data.Add("udf4", "");
                   data.Add("udf5", "");
                   data.Add("pg", "");
                   data.Add("service_provider","");
                   string strForm = PreparePOSTForm(action1, data);
                   Page.Controls.Add(new LiteralControl(strForm));

               }

               else
               {
                   //no hash

               }

           }

           catch (Exception ex)
           {
                   Response.Write("<span style='color:red'>" + ex.Message + "</span>");
           }
       }

       private string PreparePOSTForm(string url, System.Collections.Hashtable data)      // post form
       {
                   //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 (System.Collections.DictionaryEntry key in data)
           {

                   strForm.Append("<input type=\"hidden\" name=\"" + key.Key +
                                  "\" value=\"" + key.Value + "\">");
           }


                   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();
       }


Что я уже пробовал:

я пытался иметь эти поля внутри панели обновления, но она снова не работает, пожалуйста, помогите

Karthik_Mahalingam

опубликуйте код.

Er. Puneet Goel

Пожалуйста, проверьте, выполняете ли вы какую-то клиентскую работу перед публикацией. Обмен кодом-единственный способ, которым мы могли бы проникнуть внутрь.

CyberSaint

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

2 Ответов

Рейтинг:
1

CyberSaint

Я выясняю проблему большое спасибо


Рейтинг:
0

alexvw

Привет Киберсейнт,

В объявлении разнесенных скрытых полей (код aspx) они не имеют заданного значения:

<input type="hidden" runat="server" id="txnid" name="txnid" ¿Value="InitialValue"? />


Вот почему они пусты, когда вы впервые нажимаете кнопку действия.

Вы должны убедиться, что инициализировали их значения, прежде чем пытаться их прочитать. Если эти значения вы не можете опубликовать из-за секретности, то вы можете установить их в событии Page_Load следующим образом:

protected void Page_Load(object sender, EventArgs e)
{

// Your code...

if (HidDv.Value == string.Empty) //Do this for each hidden field
            { 
                //Set initial value here.
            }

// Your code...

}


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

Ура!


CyberSaint

спасибо