コントローラ:
// other usings are removed for the sake of brevity
using MvcMovie.Models;
namespace MvcMovie.Controllers
{
public class MoviesController : Controller
{
private MoviewDBContext db = new MoviewDBContext();
public ActionResult SearchIndex(string searchString)
{
var movies = db.Movies.Select(x => x);
if (!string.IsNullOrEmpty(searchString))
movies = movies.Where(x => x.Title.Contains(searchString));
return View(movies);
}
}
}
意見:
// SearhcIndex.cshtml
@model IEnumerable<MvcMovie.Models.Movie>
@using (Html.BeginForm())
{
<p>
Title: @Html.TextBox("searchString")
<br />
<input type="submit" value="Filter" />
</p>
}
<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.Title)
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
</tr>
}
</table>
に初めてアクセスするlocalhost/Movies/SearchIndex
と、HttpGet SearchIndex
が呼び出され、対応するビューのモデルが読み込まれます。ビューがブラウザにレンダリングされたら、単語を入力してリストを除外し、送信ボタンを押しますFilter
。
私の質問は:
をクリックするFilter
と、私の意見では、フォームが POST 動詞で送信されます。しかし、なぜget が再びHttpGet SearchIndex
呼び出されるのでしょうか? 私はまだ実装していません(確かに)。HttpPost SearchIndex
注:私は初心者です。学ぶことができる理由を示さずに反対票を投じないでください。このチュートリアル「編集メソッドと編集ビューの調査」を読んでいます。