如何在Webforms中提交按钮后一次维护文本框的值

问题描述:

其实我是通过twitterizer自动发送推文,并从不同的url上获取api JSON数据的数据。但是,当我把文本框中的url并启动项目它工作正常,我从文本框中获取数据,但当过程进入“授权的应用程序”在Twitter和我按“授权”按钮,然后页面加载再次,但在那个时候Request [“textbox”]为空。下面是正面编辑代码。我从一个网页,如 “Frontsheet.aspx” 发布的数据TwitterStrap.aspx如何在Webforms中提交按钮后一次维护文本框的值

<form id="form1" runat="server" action="TwitterStrap.aspx" > 
    <div style="position:absolute"> 
    <input type="text" id="text1" name="txtFirstName" placeholder="Enter Your First Name" /> 
     <br /> 
     <input id="Submit1" type="submit" value="submit" /> 
    </div> 
    </form> 

这是TwitterStrap.aspx.cs代码

protected void Page_Load(object sender, EventArgs e) 
     { 
      var text=""; 
      if (!IsPostBack) 
      { 
       text = Request.Form["txtFirstName"]; 
      } 

      using (var webClient = new System.Net.WebClient()) 
      { 




       var jsonString = webClient.DownloadString(text); 
       ProductsJsonModel Data = JsonConvert.DeserializeObject<ProductsJsonModel>(jsonString); 
       List<Product> ProductsFromUrl = Data.products; // All of your products are here. 

       // Your code 
       Session["value"] = ProductsFromUrl; 
       var title=""; 
       var cnt = ProductsFromUrl.Count; 

       for (int i = 0; i < cnt; i++) 
       { 
        title = ProductsFromUrl[0].title; 

       } 


       var oauth_consumer_key = "myLtWOTLGtLsjNsm15tUUpdEX"; 
       var oauth_consumer_secret = "uC9yHjPPV83Olvq0I8zt9eMwyucIpUcO70NduqNx0JuPQVyDZB"; 

       if (Request["oauth_token"] == null) 
       { 
        OAuthTokenResponse reqToken = OAuthUtility.GetRequestToken(
         oauth_consumer_key, 
         oauth_consumer_secret, 
         Request.Url.AbsoluteUri); 

        Response.Redirect(string.Format("http://twitter.com/oauth/authorize?oauth_token={0}", 
         reqToken.Token)); 

       } 
       else 
       { 
        string requestToken = Request["oauth_token"].ToString(); 
        string pin = Request["oauth_verifier"].ToString(); 

        var tokens = OAuthUtility.GetAccessToken(
         oauth_consumer_key, 
         oauth_consumer_secret, 
         requestToken, 
         pin); 

        OAuthTokens accesstoken = new OAuthTokens() 
        { 
         AccessToken = tokens.Token, 
         AccessTokenSecret = tokens.TokenSecret, 
         ConsumerKey = oauth_consumer_key, 
         ConsumerSecret = oauth_consumer_secret 
        }; 

        //TwitterResponse<TwitterStatus> response = TwitterStatus.Update(
        // accesstoken, 
        // "Testing!! It works (hopefully)."); 

        Twitterizer.TwitterResponse<TwitterStatus> response = TwitterStatus.Update(accesstoken, title, new StatusUpdateOptions() { UseSSL = true, APIBaseAddress = "http://api.twitter.com/1.1/" }); 

        if (response.Result == RequestResult.Success) 
        { 
         Response.Redirect("https://twitter.com/"); 
        } 
        else 
        { 
         Response.Redirect("https://twitter.com/"); 
        } 
       } 

      } 




      } 
+0

如果会,如果没有提交只火形式(的IsPostBack!)。如果表单没有提交,您将不会有第一个SD名称的request.form。 – Joel

+0

乔尔谢谢,那我该怎么办? –

+0

查看CodingYoshi提交的答案 – Joel

试试这个。我不完全确定你在尝试什么,但是下载的产品是在会话中。因此,您可以一次提供身份验证令牌以及会话得到它:

protected void Page_Load(object sender, EventArgs e) 
{ 
    var text = ""; 
    if (IsPostBack) 
    { 
     text = Request.Form["txtFirstName"]; 
    } 

    string jsonString; 

    using (var webClient = new System.Net.WebClient()) 
    { 
     jsonString = webClient.DownloadString(text); 
    } 

    if (string.IsNullOrWhiteSpace(jsonString)) 
    { 
     // Nothing to do so we return 
     return; 
    } 


    ProductsJsonModel Data = JsonConvert.DeserializeObject<ProductsJsonModel>(jsonString); 
    List<Product> ProductsFromUrl = Data.products; // All of your products are here. 

    // Your code 
    // All the products are in the value session variable so we can get it later 
    Session["value"] = ProductsFromUrl; 

    var oauth_consumer_key = "myLtWOTLGtLsjNsm15tUUpdEX"; 
    var oauth_consumer_secret = "uC9yHjPPV83Olvq0I8zt9eMwyucIpUcO70NduqNx0JuPQVyDZB"; 

    if (Request["oauth_token"] == null) 
    { 
     OAuthTokenResponse reqToken = OAuthUtility.GetRequestToken(
      oauth_consumer_key, 
      oauth_consumer_secret, 
      Request.Url.AbsoluteUri); 

     Response.Redirect(string.Format("http://twitter.com/oauth/authorize?oauth_token={0}", 
      reqToken.Token)); 

    } 
    else 
    { 
     string requestToken = Request["oauth_token"].ToString(); 
     string pin = Request["oauth_verifier"].ToString(); 

     var tokens = OAuthUtility.GetAccessToken(
      oauth_consumer_key, 
      oauth_consumer_secret, 
      requestToken, 
      pin); 

     OAuthTokens accesstoken = new OAuthTokens() 
     { 
      AccessToken = tokens.Token, 
      AccessTokenSecret = tokens.TokenSecret, 
      ConsumerKey = oauth_consumer_key, 
      ConsumerSecret = oauth_consumer_secret 
     }; 

     //TwitterResponse<TwitterStatus> response = TwitterStatus.Update(
     // accesstoken, 
     // "Testing!! It works (hopefully)."); 

     var prods = Session["value"]; 
     if (prods != null) 
     { 
      ProductsFromUrl = Session["value"] as List<Product>; 

      var title = ""; 
      var cnt = ProductsFromUrl.Count; 

      for (int i = 0; i < cnt; i++) 
      { 
       title = ProductsFromUrl[0].title; 

      } 
      Twitterizer.TwitterResponse<TwitterStatus> response = 
       TwitterStatus.Update(accesstoken, title, new StatusUpdateOptions() 
       { UseSSL = true, APIBaseAddress = "http://api.twitter.com/1.1/" }); 

      if (response.Result == RequestResult.Success) 
      { 
       Response.Redirect("https://twitter.com/"); 
      } 
      else 
      { 
       Response.Redirect("https://twitter.com/"); 
      } 

      // clear the session 
      Session.Remove("value"); 
     } 

    } 
} 
+0

谢谢Yoshi ..但是在运行过程中点击“授权按钮”时,我仍然收到空值。 –

+0

您是否改变了我所指出的发布条件? – CodingYoshi

+0

是的,我改变它,因为你在你的回答中描述,但在“授权应用程序”var tweet显示空值后。 –

CodingYoshi请检查

using (var webClient = new System.Net.WebClient()) 
       { 
        var text = ""; 

        text = Request.Form["txtFirstName"]; 
        Session["Tweet"] = Request.Form["txtFirstName"]; 
        var tweet = Session["Tweet"]; 

        if (tweet != null) 
        { 
         // do whatever you need 
         text = tweet.ToString(); 
         // clear the session 
         Session.Remove("Tweet"); 
        } 
        if (!IsPostBack) 
        { 
         text = Request.Form["txtFirstName"]; 
        } 


        var jsonString = webClient.DownloadString(text); 
+1

虽然此代码片段可能会解决问题,但[包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 – DimaSan