我在一个网页上有文字,我试图提供给Facebook帖子。我知道facebook发布的代码是正确的,因为如果我用硬编码的文本替换我的facebookMsg字符串,它就会发布。我遇到的问题是某种程度上我正在丢失上一页的文本。我已经在facebookPost.aspx页面的顶部包含:<%@ PreviousPageType VirtualPath ="〜/ Default.aspx" %GT;这告诉我,我应该能够访问默认页面控件我已经尝试过Server.Transfer("〜/ FacebookPost.aspx",true);以及Response.Redirect("〜/ FacebookPost.aspx");并且都给了我同样的错误。
这是我的代码:
来自Default.aspx的图片按钮点击事件:
protected void FacebookImageButton_Click(object sender, ImageClickEventArgs e)
{
int fb = 1;
HiddenField1.Value += "*facebook=" + fb.ToString(); ;
//Server.Transfer("~/FacebookPost.aspx", true);
Response.Redirect("~/FacebookPost.aspx");
}
以下是抛出异常的代码片段:
try
{
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
StreamReader reader = new StreamReader(response.GetResponseStream());
string vals = reader.ReadToEnd();
foreach (string token in vals.Split('&'))
{
tokens.Add(token.Substring(0, token.IndexOf("=")),
token.Substring(token.IndexOf('=') + 1, token.Length - token.IndexOf("=") - 1));
}
}
string access_token = tokens["access_token"];
setFacebookMessage(PreviousPage.SocialMediaPost);
//need to install facebook SDK for .net:
//tools/library package manager/manage nuget packages for solution search online for Facebook and install
var client = new FacebookClient(access_token);
client.Post("/me/feed", new { message = facebookMsg });
//Response.Redirect("~/Default.aspx");
}
catch (Exception e)
{
Response.Write(e.ToString() + "<br/><br/>" + url);
}
这是我的facebookPost.aspx.cs中的setFacebookMessage方法:
protected void setFacebookMessage(String tempString)
{
facebookMsg = tempString;
}
最后,我的Default.aspx.cs中的SocialMediaPost:
public String SocialMediaPost
{
get
{
return SocialMediaHiddenField.Value;
}
}
当我调试时,我甚至无法让系统切换到Default.aspx.cs代码来获取HiddenField值,因此它就好像它完全丢失了那个页面一样。
感谢您的协助!
答案 0 :(得分:0)
我弄清楚出了什么问题。发生了一个Response.Redirect,导致页面加载为一个全新的页面而不是回发,因此值被传入,但一旦重定向发生,它们就会丢失,而上一页现在是新的。
为了解决这个问题,我使用了Session。 http://msdn.microsoft.com/en-us/library/vstudio/ms178581(v=vs.100).aspx
这允许我将传递的值放入Session,可以通过重定向保存并在其后访问。