0

次のようなアクションがあります。

    public ActionResult ChangeFeeCheck(string id)
    {

       ViewBag.id = id;
       return View();
    }

私の見解では、次のものがあります。

    @{
      ViewBag.Title = "CreateList";
     }



     Please enter first name <br /><br />


    @using (Html.BeginForm())
    {

    @Html.Textbox("firstname")

    <input type="button" id="SaveChanges" value="Save" />  
    }    

ボタンをクリックすると、次のようになると思っていました

    [HttpPost]
public ActionResult ChangeFeeCheck(string firstname)
    {
      .....

    }

MVC がいつ自動的に HttpPost に移動するのか、またはいつ手動でそこに移動する必要があるのか​​ はわかりません。上記では、直接そこには行きません。私は使用する必要があります

    window.location.href

コントローラー/アクションのURLを渡します。

つまり、デフォルトではありません

    Html.BeginForm()

HttpPost (HttpGet と同じ名前)

4

3 に答える 3

3

ボタンをボタンにする必要がありsubmitます。

変化する:

<input type="button" id="SaveChanges" value="Save" />  
             ^^^^^^

に:

<input type="submit" id="SaveChanges" value="Save" />  
             ^^^^^^
于 2012-09-28T02:56:18.750 に答える
1

ここで「Convention over Configuration」ルールに従っている場合、ここで作成したビューはChangeFeeCheckアクション用である必要がありChangeFeeCheck、オーバーロードがなく、同じ名前、同じシグネチャであるため、コンパイラが混乱するように見えます。

フォームのメソッドが取得されると、最初のメソッドに移動しますが、フォームのメソッドが POST の場合、で装飾されたものを呼び出します[HttpPost]

また、送信ボタンを使用しており、デフォルトで生成された HTML フォームは POST アクションを使用するため、[HttpPost]

この記事を参照できます (元のリンクがダウンしているため、インターネット アーカイブから): https://web.archive.org/web/20120527133344/http://microsoftmentalist.com:80/2011/09/07/asp- net-mvc-difference-before-httpget-and-httppost-with-example/

たとえば、アクション メソッドがオーバーロードされる方法を参照してGETくださいPOST

于 2012-09-28T06:29:28.283 に答える