2

私は、雇用主のプロファイルベースのWebアプリ用の簡単な評価システムを開発しています。これが私の問題です:

  • 実際のページはですがdomain.com/review.aspx?user=username、IISのurl-rewriteモジュールを使用して使用しますdomain.com/username/review
  • このページには、そのユーザー名のレビューを表示するリピーターコントロールと、ユーザーが新しいレビューを作成するためのフォームが含まれています
  • フォームが送信されると、asp.netはポストバックのURLに(非表示の)クエリ文字列を再追加します。
  • ポストバックURLがdomian.com/username/review?user=username&reviewになり、更新するとページが壊れます。

asp.netが実際にはすでに存在しているがIISで書き直されたクエリ文字列を再追加しないようにする方法はありますか?

ライブリンク<-レビューを送信し、アドレスバーをクリックしてページを更新(編集)します!美しい黄色のエラーメッセージ。

編集

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>
4

1 に答える 1

7

Page の Form.Action プロパティを同じ再マップされた URL に設定する必要があると思います。

于 2011-02-11T18:43:03.900 に答える