2

ASP.NET は初めてです。私はウェブフォームを試しています。私は2つのページを持っています.NewOrder.aspxはユーザーの注文をキャプチャし、注文を保存してユーザーに情報を表示したいSaveOrder.aspxにクロスポストします.

 <telerik:RadButton ID="BtnSubmirOrder" runat="server" ButtonType="StandardButton" AutoPostBack="true"
                Text="Place order" PostBackUrl="SaveOrder.aspx">
 </telerik:RadButton>

SaveOrder.aspx が読み込まれると、次のコードはそのコントロール値を設定し、注文を保存します。ただし、ブラウザは NewOrder.aspx のままです。

protected void Page_Load(object sender, EventArgs e)
    {
        if (PreviousPage==null || !PreviousPage.IsCrossPagePostBack)
            Response.Redirect("~/Default.aspx");

        var referencingPage = PreviousPage as NewOrder;
        int id = Int32.Parse(referencingPage.SelectedPublicationId);


        DateTime neededBy = referencingPage.SelectedOrderDate;

        LblSummaryIsbn.Text = referencingPage.SelectedIsbn;
        LblSummaryNbrCopies.Text = referencingPage.NbrOfOrderedCopies;
        DateTime orderDate = DateTime.Now;
        LblSummaryOrderDate.Text = orderDate.ToShortDateString();
        LblSummaryTitle.Text = referencingPage.SelectedPublicationTitle;
        int quantity = Int32.Parse(referencingPage.NbrOfOrderedCopies);
        StockContainer _context = new StockContainer();
        Order newOrder = Order.CreateOrder(orderDate, quantity, neededBy, id);
        _context.Orders.AddObject(newOrder);
        _context.SaveChanges();
    }

ボタンがクリックされたときにフォームのアクションが SaveOrder.aspx に設定されていることを JavaScript から確認できますが、ブラウザに表示されないのはなぜですか?

4

1 に答える 1

0

ブラウザが NewOrder.aspx にとどまっている理由は、ボタンに関連付けられたボタン クリック イベントがないためだと思います。コードの残りの部分を見ないと、フォームのアクションが異なるように見える理由がわかりません。

ボタン クリック イベントを導入するには、次のようなことを行うことができます。リダイレクトロジックはそこに入る可能性があります。

マークアップ:

<telerik:RadButton ID="btnSubmit" runat="server" Text="Place Order" 
OnClick="btnSubmit_Click" />

コード:

public class NameOfPage
{
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        // You could do validation here and display an error message if something is not right.
        // For simplicity I am assuming the data comes from a set of textboxes.
        if (!PageIsValid())
        {
            return;
        }

        StockContainer _context = new StockContainer();
        Order newOrder = Order.CreateOrder(txtOrderDate.Text, txtQuantity.Text, txtNeededBy.Text, id);
        _context.Orders.AddObject(newOrder);
        _context.SaveChanges();
        // Add your redirect logic here.
    }

    private bool PageIsValid()
    {
        if (string.IsNullOrEmpty(txtOrderDate.Text))
        {
            return false;
        }

        if (string.IsNullOrEmpty(txtQuantity.Text))
        {
            return false;
        }

        // and so on for the other fields that are required.
        return true;
    }
} 
于 2013-03-12T15:28:36.820 に答える