1

.NET MVC 4 で興味深い小さな問題が発生しました。これがどのように機能するかを学習しようとしていますが、いくつかのチュートリアルを実行した後、同じ問題に遭遇し続けています。

以下は、ページの読み込み時に呼び出されるデフォルトの Index メソッドです。

   public ActionResult Index() {
       var result = (from Product in db.Products
                     orderby Product.Id ascending
                     select Product);
       return View(result.ToList());
   }

このメソッドは、データベースから製品アイテムのリストを返します..

@using (Html.BeginForm("Index", "Stap1", FormMethod.Post, new { id = "form1" }))
{
    <select id="select" size="4" name="product">
        @foreach (var item in Model)
        {
            <option value="@item.Id" >@Html.DisplayFor(modelItem => item.Naam), @Html.DisplayFor(modelItem => item.Prijs)</option>            
        }
    </select>
    <input type="submit" value="Voeg Toe!" name="Add" />
}

フォームの投稿データをキャッチする機能を追加しました。このような..

[HttpPost]
public ActionResult Index(int product = 0) {
                var result = (from Product in db.Products
                              orderby Product.Id ascending
                              select Product);
                System.Diagnostics.Debug.WriteLine("wrong function called!");
                return View(result.ToList());
            }

ご覧のとおり、インデックス ページを読み込もうとすると、かなり基本的な内容になります。通常の代わりに「オーバーロードされた httppost Index()」を呼び出します。何も投稿されていないときに HTTPPOST メソッドを呼び出すのはなぜですか?

4

1 に答える 1

2

私はあなたのコードをチェックしましたが、それは正しい動作です。アプリケーションは、 IndexビューをレンダリングするHomeControllerから始まります。

あなたの見解では、私はこのコードを見つけました:

@using (Html.BeginForm("Index", "Stap1", FormMethod.Post, new { id = "form1" }))
{
   <input type="submit" value="Start!" name="start" />
}

したがって、実際にはStap1ControllerアクションIndexに投稿しています。
投稿せずに Index を呼び出し (HttpGet) たい場合は、次のようにする必要があります。

@Html.ActionLink("Start!", "Index", "Stap1")
于 2012-09-27T09:49:42.743 に答える