私は単純なASP.NET MVC 3ダミーのアプリケーションを持っています(WebFormsからMVCを学ぶだけです)。DBの永続性を持たないシンプルなフォームの更新
そして、私はかなり間にいくつかのDBのものを持っていないフォームを更新する方法についてかなり混乱しています。私はちょうどテキストボックスを持つフォームを持っていますし、ボタンを押した後に文字列を大文字で見たいと思っています。しかし、私の何も起こりません。
コントローラ:
public ActionResult Index()
{
ToUppercaseModel model = new ToUppercaseModel { TheString = "testing" };
return View(model);
}
[HttpPost]
public ActionResult Index(ToUppercaseModel model)
{
model.TheString = model.TheString.ToUpper();
return View(model);
}
モデル:
public class ToUppercaseModel
{
[Display(Name = "My String")]
public string TheString { get; set; }
}
およびView:
@using (Html.BeginForm()) {
<div>
<div class="editor-label">
@Html.LabelFor(m => m.TheString)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.TheString)
</div>
<p>
<input type="submit" value="Convert" />
</p>
</div>
}
これはSIMでありますそれは私が考えるようになります。今や2番目のインデックスメソッドのreturn View(model);
は明らかに機能していません。 RedirectToAction()
についていくつか見て、TempData
にデータを保存しました。ほとんどの例では、いくつかのIDを送信していますが、私はdbが動作しないので、IDを送信しません。
私はこれを行う場合:
return RedirectToAction("Index", model);
を、私は、このオブジェクトのために定義されていませんパラメータなしのコンストラクタ
を取得します。
エラーメッセージ。これは簡単ではありませんか?私はPost/Redirect/Getの概念を理解していると思いますが、これを単純なものとして適用する方法は見当たりません。
ありがとうございました。
ありがとうございます。これは機能します。しかし、基本的に正しい方法はRedirectToActionを使うことでしょうか?か否か? – Remy
@Remyいいえ、投稿された無効なフォームを返すのは、フォームを返すことです。 PRGパターンは、成功したフォームを投稿した後にビューを返すためのものです(人々がフォームをリフレッシュして再送信するのを止めるため)。あなたは通常TryValidateModelの後にModelState.IsValidのブロックテストでRedirectToActionを持っています – Chao