2011-02-11 46 views
2

我正在爲我的僱主基於簡歷的網絡應用程序開發一個簡單的評分系統。這裏是我的問題:如何阻止asp.net在表單上重新添加querystrings?

  • 實際的頁面是domain.com/review.aspx?user=username,但我使用IIS的URL重寫模塊使用domain.com/username/review
  • 該頁面包含一個顯示評論爲該用戶名Repeater控件,以及一個表單爲人們創建新的評論
  • 當提交表單時,asp.net會在回發中將(隱藏的)查詢字符串重新附加到url。
  • 回髮網址現爲domian.com/username/review?user=username&review,導致頁面在刷新時中斷。

有什麼辦法讓asp.net從再追加這實際上已經存在的查詢字符串,但IIS

Live link <改寫 - 提交評論,然後刷新頁面(編輯)點擊地址欄!美麗的黃色錯誤消息。

編輯

C#代碼:

protected void submitReview(object sender, EventArgs e) 
    { 
     try 
     { 
      int starRating = txtStarRating.Text == "" ? 0 : Int32.Parse(txtStarRating.Text); 
      testimonials.addNew(Int32.Parse(txtHiddenUid.Text), reviewContent.Text, reviewerName.Text, true, starRating); 
      reviewForm.Visible = false; pnlReviewSubmissionSuccess.Visible = true; 
     } 
     catch { starErrorMessage.Text = "There was an error submitting your review. Please refresh this page and try again."; } 
    } 

ASP代碼:

<div ID="pnlSubmitReview" runat="server"> 
       <div id="reviewForm" runat="server"> 
        <div id="leaveReviewBoxes"> 
         <span style="margin-bottom:10px; float:left; font-weight:bold;">Leave a Review</span> 
         <div style="clear:both;"></div> 
         <asp:Label ID="nameLabel" runat="server">Name:</asp:Label>    
         <asp:Textbox runat="server" ID="reviewerName"></asp:Textbox> 
         <div style="clear:both;"></div> 
         <asp:Label ID="reviewLabel" runat="server">Review:</asp:Label> 
         <asp:Textbox runat="server" ID="reviewContent" Width="200px" TextMode="MultiLine"></asp:Textbox> 
        </div> 

        <div> 
         <ol id="starlist"> 
          <li><a id="star1" name="star1" href="javascript:void(0)" class="star"></a></li> 
          <li><a id="star2" name="star2" href="javascript:void(0)" class="star"></a></li> 
          <li><a id="star3" name="star3" href="javascript:void(0)" class="star"></a></li> 
          <li><a id="star4" name="star4" href="javascript:void(0)" class="star"></a></li> 
          <li><a id="star5" name="star5" href="javascript:void(0)" class="star"></a></li> 
         </ol> 
         <asp:TextBox ID="txtStarRating" runat="server" Text=""></asp:TextBox>    
         <asp:Label runat="server" ID="starErrorMessage"></asp:Label> 
         <asp:TextBox ID="txtHiddenUid" runat="server" Visible="false"></asp:TextBox> 
        </div> 
        <asp:Button runat="server" ID="submitReviewButton" Text="Submit Review" OnClick="submitReview" /> 
       </div> 

       <div ID="pnlReviewSubmissionSuccess" runat="server" Visible="false"> 
         Thank you! Your review has been submitted. 
       </div> 
      </div> 
+0

我提交了一個評論和刷新,沒有得到一個錯誤。 offtopic - 我來自奧格登,幾年前搬走了小世界!這些日子裏面的事情怎麼樣? – asawyer 2011-02-11 17:56:01

+0

確實是小世界!儘管斯隆教練義不容辭,奧格登卻冷酷而美妙。 – 2011-02-11 17:58:16

回答

7

我相信你需要在頁面的Form.Action屬性設置爲相同的重新映射URL。

相關問題