ASP.NET MVC でテキストボックスの値を取得する - ASP.NET MVCでのポストデータの受け取り - ASP.NET MVC

ASP.NET MVC でテキストボックスの値を取得するコードを紹介します。

概要

ASP.NET MVCでテキストボックスなどのコントロールの値を受け取るには、submitボタンなどでテキストボックスの内容をポストし、その値を受け取る動作になります。

プログラム

以下のプログラムを作成します。
コントローラーやビューの追加については「シンプルなASP.NET MVC アプリケーションを作成する (ASP.NET MVCプログラミング)」の記事を参照してください。

コントローラー

今回は DefaultControllerを作成します。下記のコードを記述します。
DefaultController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace TextBoxButtonDemo.Controllers
{
    public class DefaultController : Controller
    {
        // GET: Default
        public ActionResult Index()
        {
            return View();
        }

        // GET: Send
        [HttpPost]
        public ActionResult Send(string value1)
        {
          ViewData["PostData"] = value1 + "を受け取りました。";
          return View();
        }
    }
}

解説

Index()メソッドに関してはデフォルトのコードのままです。変更しません。
Send()メソッドはメソッドの前に[HttpPost]属性を記述します。この記述により、Post時に動作するメソッドであることを明示します。Postデータの受け取りはメソッドの引数に記述します。上記の場合は "value1" 引数が Viewのvalue1テキストボックスの値を受け取ります。受け取った情報を画面に表示するため、ViewData["PostData"]に値を代入します。

ビュー

2つのビュー(Index, Send)を追加します。
それぞれのcshtmlファイルは以下になります。
Index.cshtml
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div> 
      @using (Html.BeginForm(
      "Send",
      "Default",
      null,
      FormMethod.Post,
      new { enctype = "multipart/form-data" }
      )) {
        @Html.TextBox("value1", "", new { maxlength = 20 })
         <input type="submit" value="送信" />
      }
    </div>
</body>
</html>

解説

<div>タグで囲まれた@using~の部分がフォームのコードになります。
フォームは以下の書式で作成します。
@using (Html.BeginForm(
  "(サブミット先のアクション)",
  "(コントローラー名)",
  [ルートパラメーター(URLにパラメータが追加されます)],
  [アクション POST/GET],
  [その他の属性]
)) {
  [フォームの中身]
}

フォームの内部は以下のコードでテキストボックスを配置しています。
  @Html.TextBox("value1", "", new { maxlength = 20 })
また、こちらのコードでサブミットボタンを配置しています。
  <input type="submit" value="送信" />
Send.cshtml
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Send</title>
</head>
<body>
    <div> 
      @Html.Encode(ViewData["PostData"])
    </div>
</body>
</html>

解説

コントローラで設定されたViewData["PostData"]を画面に表示します。

実行結果

プロジェクトを実行します。Webブラウザが起動し下図の画面が表示されます。(アプリケーションの /Default/Index URLが開かれます。)


テキストボックスに文字を入力します。入力ができましたら、右隣の[送信]ボタンをクリックします。


アプリケーションの /Default/Send のURLにページ遷移します。テキストボックスに入力した内容が画面に表示されていることが確認できます。


ASP.NET MVCでテキストボックスに入力した内容を取得できました。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2024-01-07
作成日: 2015-02-18
iPentec all rights reserverd.