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("/"); }