0

THISチュートリアルに従って、MVCを学習しています。(リンクは、私が立ち往生している場所に直接移動します)。これまでのところ、すべてのビューにコントローラーがあることを学びました。チュートリアルで説明したように、Web エントリ フォームを使用してユーザーから入力を取得する必要があります。私のプロジェクトでは、Default1という名前のコントローラーがあり、localhost:xyz/Default1/Index として実行できます。それは完璧に動作します。

次に、 Default2という名前の新しいコントローラーを作成し、ビューにバインドしてデータを表示すると、localhost:xyz/Default2/Displaycustomer として完璧に機能しました。顧客情報は静的 (ハードコード) でした。コントローラーは次のとおりです。

    public ViewResult DisplayCustomers()
    {
        Customer cobj = new Customer();
        cobj.Code = "12";
        cobj.Name = "Zeeshan";
        cobj.Amount = 7000;


        return View("DisplayCustomers",cobj);
    }

ここで、チュートリアルで説明したように、html ページを使用して、ユーザーからの入力を取得する必要があります。だから私はビューフォルダの下に新しいウェブフォームを追加しようとし、コントローラを次のように変更しました:

[HttpPost]
    public ViewResult DisplayCustomers()
    {
        Customer cobj = new Customer();

        cobj.Code = Request.Form["Id"].ToString();
        cobj.Name = Request.Form["Name"].ToString();
        cobj.Amount = Convert.ToDouble(Request.Form["Amount"].ToString());

        return View("DisplayCustomers",cobj);
    }

私の質問は次のとおりです。プロジェクトを凝視させて、最初に入力を取得してから、上記のコントローラーを使用して表示するにはどうすればよいですか? Webフォームを正しい場所に追加しましたか? それを実行するためのリンクは何ですか?localhost:xyz/Default2/entryform などを試しましたが失敗しました。(私の entryform.aspx で、 form action=" DisplayCustomer" について言及しました)

4

2 に答える 2

1

あなたが見逃しているのは、フォームを表示するだけのアクションのようです。つまり、フォームを表示するためのアクションが必要なだけです。そのフォームの POST アクションは、コントローラーのDisplayCustomersアクションを参照する必要があります。

したがって、コントローラーコードでは次のようになります。

public class CustomerController : Controller 
{
    [HttpGet]
    public ViewResult New()
    {
       return View("NewCustomer");  //Our view that contains the new customer form.
    }

    // Add your code for displaying customers below
}

そして、あなたの見解では、このようなコードがあります

@using(Html.BeginForm("DisplayCustomers", "Customer")) {
    <!-- Add your form controls here -->
}

呼び出すアクション メソッドとコントローラーを指定するバージョンの BeginForm ヘルパーを使用していることに注意してください。これformにより、アクションにポストバックするタグが書き込まれますDisplayCustomers。同等の HTML は次のとおりです。

<form method="POST" action="/Customer/DisplayCustomers">

次に、URL http://test.server/Customer/Newを使用してフォームにアクセスします。

于 2013-10-04T13:55:23.877 に答える