私はMVC 5 Asp.Netに取り組んでおり、 this チュートリアルに従っています。 [フィルター]ボタンをクリックしたときに、結果がどのように取得されるのでしょうか。
このコードがMovie/view/Index.cshtmlに追加されるポイントがあります
@using (Html.BeginForm())
{
<p> Title: @Html.TextBox("SearchString") <br />
<input type="submit" value="Filter" /></p>
}
私の知る限り、テキストボックスと画面上のボタンを作成します。しかし、このボタンはどのようにしてsearch(index)関数を呼び出し、関数にtextboxの値を渡すのでしょうか。これを取得できませんでした。
ばかげた質問ではありません。 @html.BeginForm()
は次のように機能します。 Action
Controller
FormType
htmlAttributes
など、追加できるパラメーターがいくつかあります。動作方法は、空のままにすると、現在のページと同じ名前の投稿アクションを探します。たとえば、ログインページにいる場合は、ログイン投稿アクションを探します。 action
およびcontroller
にアクセスしたいものを常に書きます。
@Html.BeginForm("AddUser", "Admin", FormMethod.Post, new { @class = "my_form"}) {
}
したがって、post action
は、フォームに含まれるパラメーターを受け入れる必要があり、Model
、つまりProduct
、ViewModel
、または単一の文字列パラメーターにすることができます。検索の場合、アクションは次のようになります
[HttpPost]
public ActionResult Search(string SearchString)
{
//do something here
}
検索文字列がメソッドに渡されるため、ここで注意してください。 <input>
の名前は、アクションが取るパラメーターと同じでなければなりません。フォームは次のようになります
@using (Html.BeginForm("Search", "YOUR CONTROLLER", FormMethod.Post)){
<p> Title: @Html.TextBox("SearchString") <br />
<input type="submit" value="Filter" /></p>
}
これが明快さをもたらすことを願っています。