私はAsp.net MVCを初めて使用し、入力用に2つのテキストボックスと出力用に1つのテキストボックスを持つフォームを持つアプリケーションを開発しています.フォームにもボタンを追加しました.今、クリックボタンで出力テキストボックスに出力を表示したいイベント。MVC4でそれを行う方法を教えてください。
1 に答える
ASP.NET MVC は、ASP.NET WebForms と同じようには機能しません。というか、ASP.NET WebForms は Web の残りの部分と同じようには機能しません (!)。
HTML フォームを作成すると、フォームaction
の送信を処理する URL を指定する属性があります。ユーザーがinput
またはを使用してフォームを送信するbutton
とtype="submit"
、ブラウザはデフォルトで MIME タイプPOST
を使用してフォームに含まれるデータを含め、その URL にリクエストを送信application/x-www-form-urlencoded
します (フォームにファイルのアップロードを含める必要がある場合は異なります)。
サーバー側のコードは、個々の UI イベントに応答するべきではありません。これは Web の仕組みではないためです。WebForms は、HTTP を介した抽象化を提供して、Web には存在しない制御の感覚に誘うだけです。
GET
フォームのおよびPOST
リクエストを処理する 2 つのアクション メソッドの例を次に示します。
public ActionResult Index()
{
var model = new MyFormFields();
return View(model);
}
[HttpPost]
public ActionResult Index(MyFormFields fields)
{
if (!ModelState.IsValid)
{
return View(fields);
}
// do stuff with form data
var model = new MyResultModel
{
Output = fields.Input // for e.g.
};
return View("Results", model);
}
これはフォームの送信に応答し、結果ビュー モデルで別のビューをレンダリングします。POST
ブラウザが誤ってリクエストを再送信できないように、ここで HTTP リダイレクトを実行することをお勧めしますが、これについては後で説明します。