これは非常に明白なことであるに違いありませんが、私にとっては非常に奇妙に見えます。単純なコントローラー、1つのプロパティを持つモデル、およびプロパティの値を表示し、そのプロパティのエディターをレンダリングするビューがあります。ボタンをクリックすると、フォームが投稿され、感嘆符がプロパティに表示されます。この感嘆符は私のビューに表示されますが、タグにのみ表示され、によってレンダリングされたタグp
には表示されません。input
Html.TextBoxFor()
Html.TextBoxFor()
アクション後にモデルを更新したことを無視するのはなぜですか?
この動作を変更する方法はありますHtml.TextBoxFor()
か?
意見
@model ModelChangeInPostActionNotVisible.Models.IndexModel
@using (Html.BeginForm())
{
<p>@Model.MyProperty</p>
@Html.TextBoxFor(m => m.MyProperty)
<input type="submit" />
}
モデル
namespace ModelChangeInPostActionNotVisible.Models
{
public class IndexModel
{
public string MyProperty { get; set; }
}
}
コントローラ
namespace ModelChangeInPostActionNotVisible.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new IndexModel { MyProperty = "hi" });
}
[HttpPost]
public ActionResult Index(IndexModel model)
{
model.MyProperty += "!";
return View(model);
}
}
}
送信ボタンをクリックした後のHTML
<form action="/" method="post"> <p>hi!</p>
<input id="MyProperty" name="MyProperty" type="text" value="hi" /> <input type="submit" />
</form>