如何在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/");
}
}
}
}
试试这个。我不完全确定你在尝试什么,但是下载的产品是在会话中。因此,您可以一次提供身份验证令牌以及会话得到它:
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");
}
}
}
谢谢Yoshi ..但是在运行过程中点击“授权按钮”时,我仍然收到空值。 –
您是否改变了我所指出的发布条件? – CodingYoshi
是的,我改变它,因为你在你的回答中描述,但在“授权应用程序”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);
虽然此代码片段可能会解决问题,但[包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 – DimaSan
如果会,如果没有提交只火形式(的IsPostBack!)。如果表单没有提交,您将不会有第一个SD名称的request.form。 – Joel
乔尔谢谢,那我该怎么办? –
查看CodingYoshi提交的答案 – Joel