朧の.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)
    {
        int result = 0;

        //変数orderを数値に変更
        int n = int.TryParse(order, out result) ? result : 0;
        //ストアドを使ってデータ登録
        int err = db.sp_RegisterOrder(ClientName, "利尻昆布", n);

        return Redirect("/");
    }








良いやや良い普通やや悪い悪い
12 3 30 4 2

投稿日時評価コメント
2020/11/11 普通 なにこれ
2020/11/10 普通 ロンドン
2020/10/07 やや悪い
2020/09/30 普通 あいうえ
2020/09/15 良い
2020/09/14 普通 Testだよ
2020/09/14 普通 jhiだよ
2020/09/14 普通 できない
2020/08/21 普通 できないー
2020/08/08 管理人 管理人です。モデルとのやりとりを簡単ではありますが、載せました。参考にしてください。
2020/08/07 普通 モデルとのやり取りが見たかったです。
2020/07/13 普通 あああ
2020/07/09 普通
2020/07/08 悪い
2020/06/30 普通 たけなか
2020/06/18 良い すばらしい
2020/06/10 やや良い
2020/06/08 良い テスト
2020/05/30 普通 あああ
2020/03/16 普通
2020/02/06 良い ぬる
2019/11/05 普通 日本語
2019/09/20 普通 うう
2019/08/30 普通 ああ
2019/07/12 悪い いいいいいい
2019/07/12 良い あああああああ