我有一个单选按钮列表,当用户选择一个按钮时,页面会重新加载并显示正确的信息,但按钮消失了。
有没有办法避免这种情况?
这是HTML:
<div class="checkBoxesColumn">
<label><input class="videoWallRadioCls" name="videoWallRadio" type="radio" id="viewAll" value="0" runat="server" />View All</label>
<label><input class="videoWallRadioCls" name="videoWallRadio" type="radio" id="journey" value="1" runat="server" />My MBC Journey</label>
<label><input class="videoWallRadioCls" name="videoWallRadio" type="radio" id="challenges" value="2" runat="server" />Challenges</label>
<label><input class="videoWallRadioCls" name="videoWallRadio" type="radio" id="advice" value="3" runat="server" />Positive Outlooks & Advice</label>
<label><input class="videoWallRadioCls" name="videoWallRadio" type="radio" id="thanks" value="4" runat="server" />Giving Thanks</label>
<label><input class="videoWallRadioCls" name="videoWallRadio" type="radio" id="perspective" value="5" runat="server" />Family / Friend Perspective</label>
</div>
以下是代码隐藏:
protected void Page_Load(object sender, EventArgs e)
{
// HIDE UNTIL 10/13
if (DateTime.Now > new DateTime(2012, 9, 12))
{
mbcRadioList.Visible = true;
}
video myVideo = new video();
string categoryID = "0";
if (!string.IsNullOrEmpty(Request["category_id"])) categoryID = Request["category_id"];
Hashtable ht = myVideo.ListingForWall(categoryID);
//Response.Write("Test: " + ht.Count);
//Response.Write("Test: " + ht["B-01"]);
StringBuilder myStringbuilder = new StringBuilder();
for (int i = 1; i <= 36; i++)
{
string iStr = i.ToString();
if (iStr.Length == 1) iStr = iStr.PadLeft(2, '0');
//Response.Write("A-" + iStr + "<br />");
//Response.Write("TEST: " + ht["A-" + iStr] + "<br />");
string videoClass = "videoWallThumb thumb" + iStr;
if (ht["A-" + iStr] != null)
{
string[] tmp = ht["A-" + iStr].ToString().Split('|');
if (tmp[2] == "0") videoClass += " disabled ";
myStringbuilder.AppendLine("<a class=\"" + videoClass + "\" href=\"videoWallDetail.aspx?video_id=" + tmp[0] + "\"><img src=\"images/video_images/" + tmp[1] + "\" alt=\"\"/></a>");
}
else
{
videoClass += " incomplete ";
myStringbuilder.AppendLine("<a class=\"" + videoClass + "\" href=\"#\"><img src=\"images/placeholder.jpg\" alt=\"\"/></a>");
}
}
mosaicA.Text = myStringbuilder.ToString();
}
如果我提供的代码不够或令人困惑,请告诉我,我正在尝试解决这个小问题,以便继续讨论下一期。
提前致谢!
答案 0 :(得分:2)
我认为这是一个ViewState问题。只有Web控件才能维护视图状态,这样可以在回发之间保留信息。
答案 1 :(得分:1)
选中此复选框后,您是否尝试过设置会话变量?这样在页面重新加载时,您可以看到选择了哪一个并将其设置为true。
因此,您可以尝试使用单选按钮的Id设置会话变量,并在它返回时读取变量并设置会话变量保持为真的Id。
我不确定是否有更好的方法可以解决这个问题,但这是我想到的第一件事。
我唯一可以建议的是,如果你使用AJAX调用进行部分更新,那么整个网页都不会重新加载。
答案 2 :(得分:0)
没关系,我在category_id上使用了一个开关盒......
switch ((Request["category_id"]))
{
case "0": viewAll.Checked = true; break;
case "1": journey.Checked = true; break;
case "2": challenges.Checked = true; break;
case "3": advice.Checked = true; break;
case "4": thanks.Checked = true; break;
case "5": perspective.Checked = true; break;
}