朧の.Netの足跡
問合せ先:support@oborodukiyo.info サイト内検索はこちら 
ASP.NET MVC MVCでPost時に入力値を取得するには





ASP.NET MVC 4で、ユーザの入力値を取得する時には、Razor構文でクラスのプロパティを指定すると簡単にできますが、モデルでストアドを使ってデータ登録をする場合ストアドに渡すデータのクラスが作られないので困ります。
そんな時はユーザが入力するHTMLのタグでidではなくnameを書いておきます。
WebFormでは、サーバコントロールでidを指定してたと思うのでうっかりidを書いてしまうかもしれませんが、nameの方を見るようなので間違わないように。
またフォームはBeginFormで、コントロールとアクションを指定して、引数にはタグのname属性の値と同じ名前の仮引数を作ります。
またこの時のアクションにはHttpPost属性をつけておくとよいでしょう。
またユーザの入力値が空欄である場合もあるのであれば、それに対する仮引数の型はstringがよいかもしれません。
アクションの中でnullかどうか判断して型変換をするのがよいかもしれません。


cshtmlファイル

@using (Html.BeginForm("PostOrder", "myWebSite"))
{
    <p>
        氏名:<input type="text" name="ClientName" maxlength="25" /><br />
                依頼内容<br />
        <textarea name="order" cols="40"></textarea><br /><br />
        <input type="submit" value="送る" /><input type="reset" />
   </p>
}

コントローラーのアクション

    [HttpPost]
    public ActionResult PostOrder(string ClientName, string order)
    {
        System.IO.StreamWriter wStream = new System.IO.StreamWriter("D:\\order.txt");
        wStream.WriteLine("ClientName:" + ClientName );
        wStream.WriteLine("order:" + order);
        wStream.Close();
        return Redirect("/");
    }








良いやや良い普通やや悪い悪い

投稿日時評価コメント