C# 在没有查询字符串的情况下将变量传递到同一页
我想更改下面的代码,这样就不必使用查询字符串。我想设置两个变量C# 在没有查询字符串的情况下将变量传递到同一页,c#,asp.net,C#,Asp.net,我想更改下面的代码,这样就不必使用查询字符串。我想设置两个变量yesID和noID。我正在从default.aspx导航到同一页面default.aspx。这可能吗?如果是,怎么做 //get query string if (Request.QueryString["yesId"] != null && Request.QueryString["noId"] != null) { int yesPictureId = Convert.ToInt32(Request.Qu
yesID
和noID
。我正在从default.aspx
导航到同一页面default.aspx
。这可能吗?如果是,怎么做
//get query string
if (Request.QueryString["yesId"] != null && Request.QueryString["noId"] != null)
{
int yesPictureId = Convert.ToInt32(Request.QueryString["yesId"]);
int noPictureId = Convert.ToInt32(Request.QueryString["noId"]);
//Set rated image Items to Visible
RatedImage.Visible = true;
HyperLink1.Visible = true;
RatedPicRating.Visible = true;
//pass ratings to database
Ratings PassRatings = new Ratings();
PassRatings.InsertRatings(yesPictureId, 1);
PassRatings.InsertRatings(noPictureId, 2);
//Get total yes and nos and Do Calculation
Ratings GetNoVotes = new Ratings();
int DATotalYesVotes = GetNoVotes.GetTotalNOVotes(1, yesPictureId);
int DaTNoVotes = GetNoVotes.GetTotalNOVotes(2, yesPictureId);
int DaTotalVotes = DATotalYesVotes + DaTNoVotes;
double Percentage = ((double)DATotalYesVotes / (double)DaTotalVotes) * 100;
//Round percentage
Percentage = Math.Round(Percentage, MidpointRounding.AwayFromZero);
//Insert New percentage
Picture UpdatePictureTating = new Picture();
UpdatePictureTating.UpdateRatings(yesPictureId, (int)Percentage);
//Create pictue object
Picture RatedPic = new Picture();
DataTable DARatedPicture = RatedPic.GetRatedPicByQueryString(yesPictureId);
//Assign Location and Rating to variables
foreach (DataRow row in DARatedPicture.Rows)
{
// firstRatedPicId = row["PicID"].ToString();
//secondNoPicId = firstYesPicId;
//holds member Id for profile link
int MemberID = (int)row["MemberID"];
RatedPicnameLabel.Text = row["MemberName"].ToString() + "'s profile";
HyperLink1.NavigateUrl = "Member.aspx?UserID=" + MemberID;
RatedPicRating.Text = "Banged Rating: " + row["PicRating"].ToString() + "%";
RatedImage.ImageUrl = "Pictures/" + row["PicLoc"];
RatedImage.PostBackUrl = "Member.aspx?UserID=" + MemberID;
}
}
else
{
//If we dont have any ratied pictures hide those elements
RatedImage.Visible = false;
HyperLink1.Visible = false;
RatedPicRating.Visible = false;
}
我正在设置下面的变量。但我不想使用查询字符串
FirstPicLink.PostBackUrl = "default.aspx?yesId=" + firstYesPicId + "&noId=" + firstNoPicId;
SecondPicLink.PostBackUrl = "default.aspx?yesId=" + secondYesPicId + "&noId=" + secondNoPicId;
我是这样想的。但是如何存储这些变量呢?一旦重新加载页面,它们不会丢失吗
yesID = 1
NoID = 2
FirstPicLink.PostBackUrl = "default.aspx";
SecondPicLink.PostBackUrl = "default.aspx";
会话是你的朋友
默认情况下,导致回发的控件(如按钮)会将页面提交回自身。因此,您不需要使用PostBackUrl属性 关于保持变量的值: a) 您可以将它们存储在隐藏字段中:检查控件
<asp:HiddenField id="yesID" runat="server" value="1"/>
c) 视图状态
ViewState["yesID"] = 1;
然后在页面加载过程中再次读取它们。IMO VeiwState应该最适合您,因为您正在将数据发布回同一页面,并且对于您的特定情况,它比会话更高效
ViewState["yesID"] = 1;
ViewState["noID"] = 2;
ViewState["yesID"] = 1;
ViewState["noID"] = 2;