私はmvcを初めて使用しています。このモデルには苦労しています。 私の理解では、アクションごとに1つのモデルしか使用できません。asp.net mvcモデルで作業する方法(ポストコントローラのアップデート)
public class TestModel
{
public string foo1 { get; set; }
public string foo2 { get; set; }
public string foo3 { get; set; }
}
私は部分的に正常なアクションで私のモデルをロードします:
public ActionResult Index()
{
TestModel model = new TestModel();
model.foo1 = "foo1";
return View(model);
}
次に、ユーザは、ビューからモデルにデータを追加する必要があります。
私はポストコントローラにさらにデータを追加する必要があり、ユーザのデータによると@model SAS_MVC.Models.Test.TestModel
@using (Html.BeginForm())
{
@Html.EditorFor(model => model.foo1, new { htmlAttributes = new { @class = "form-control" } })
@Html.EditorFor(model => model.foo2, new { htmlAttributes = new { @class = "form-control" } })
@Html.EditorFor(model => model.foo3, new { htmlAttributes = new { @class = "form-control" } })
<input type="submit" value="submit" />
}
:
[HttpPost]
public ActionResult Index(MyModel model, FormCollection form)
{
// get some data from DB
model.foo3 = 123;
return View(model);
}
どのように私は永久にこのモデルを保存することができますか?私には問題があります。 foo3はビューでは空です。データを失うことなく、ポストコントローラとビューの間でモデルを何度も渡したいと思います。
私はTempDataとViewBagで試してみましたが、私にとってはこれはintellisenseで動作するのが非常に不快です。
どうすればいいですか?手伝ってくれてありがとう! EF6と
更新:
public class MyEntity
{
public int Id { get; set; }
public string Name { get; set; }
}
public class TestController : Controller
{
DB03SASModel dbModel = new DB03SASModel();
// GET: Test
public ActionResult Index()
{
MyEntity model = new MyEntity();
model.Name = "AAAA";
dbModel.MyEntities.Add(model);
dbModel.SaveChanges();
return View(model);
}
[HttpPost]
public ActionResult Index(MyEntity model)
{
model.Name = "BBBB";
dbModel.SaveChanges();
//UpdateModel(model);
return View(model);
}
}
ビュー
@model SAS_MVC.MyEntity
@using (Html.BeginForm())
{
@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.DisplayFor(model => model.Id, new { htmlAttributes = new { @class = "form-control" } })
@Html.HiddenFor(model => model.Id, new { htmlAttributes = new { @class = "form-control" } })
<input type="submit" value="submit" />
}
今、私はEFコードファーストを使用してモデルを保存し、私はDBでそれを確認 - >すべてのことはよく保存されます。 しかし、もう一度ビューは間違った価値を持ち、私はまだ苦労しています。 私は、@ Html.HiddenForがポスト・コントローラーのエンティティの現在のIDを提供していることを知りました。値を「BBBB」に変更したのと同じエンティティをビューに戻すよりも、ビューが更新を行ったことはありませんでした。 申し訳ありません。私がUpdateModel(モデル)を試してみる。 "AAAA"は再び私の価値です!この価値はどこから生じたのですか? DBにはこの時点でそのような価値はありません!!何が間違っていたのですか?
正しいパターンは、投稿が発生したときにデータを保存することです。データベースから取得する必要があるデータが必要なたびに –
「アクションごとに1つのモデルしか使用できません。何らかの理由で、顧客モデルと注文モデルの両方を同時に送信する必要があるフォームがあるとします。CustomerプロパティとOrderプロパティの両方を含む新しいモデルCustomerOrderを作成して、両方を同時に投稿することができます。 – mason
PRGパターンを見てください。これはあなたが[RedirectToActionでモデルを含めるにはどうしたらいいですか?](http://stackoverflow.com/questions/11209191/how-do-i-include-a-model-with-a-redirecttoaction) – Shyju