Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在没有查询字符串的情况下将变量传递到同一页_C#_Asp.net - Fatal编程技术网

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;