私はいくつかの記事(MSDNでも)が、ActionMethods間でデータを渡すためのTempDataを提案しているのを見ました。しかし、ここでは、TempDataを避けなければならないと言っている人もいます。これにアプローチするベストプラクティスの方法は何ですか?RedirectToActionまたはTempDataを通じて値を渡すべきですか?
ここに私の状況を示すいくつかのコードがあります。 注:私は100%確信しています、私はこれを間違っています。それが私がここにいる理由です。 :)また、私は最近までWebformsをやってきました。
注2:This is related, but not the same.
ビュー:
<div>
@using (Html.BeginForm("Previous", "Home", new {month = @month}, FormMethod.Post))
{
<input id="previous" type="submit" value="Previous" />
}
// This fails but that's another situation
@using (Html.BeginForm("Next", "Home", new {month = @month, year = @year}, FormMethod.Post))
{
<input id="next" type="submit" value="Next" />
}
</div>
コントローラのメソッド:
[HttpPost]
public ActionResult Previous(HTMLMVCCalendar.Models.MonthModel prevMonth)
{
Calendar monthEventsCal = new Calendar();
int month = prevMonth.Month;
int year = prevMonth.Year;
var newMonth = monthEventsCal.previousMonth(year, month);
month = newMonth.Item2;
year = newMonth.Item1;
return RedirectToAction("Index", "Home", new { month = month });
}
[HttpPost]
public ActionResult Next(HTMLMVCCalendar.Models.MonthModel nextMonth)
{
Calendar monthEventsCal = new Calendar();
int month = nextMonth.Month;
int year = nextMonth.Year;
var newMonth = monthEventsCal.nextMonth(year, month);
month = newMonth.Item2;
year = newMonth.Item1;
return RedirectToAction("Index", "Home", new { year = year, month = month });
}
あなたが共有する必要があるデータの種類を定義します(とどのように)、我々は、良いデータ転送メカニズムとして信頼性が低い、「TempData」よりも優れた選択肢を提案することができます。 – Tejs
インデックスはカレンダーをイベントとともにロードします。 [前へ]ボタンと[次へ]ボタンは、前と次のアクションメソッドに月と年(例:4と2012)を送信する必要があります。彼らは必要な年月を計算し、それをIndexのアクションメソッドに渡します。 – dotnetN00b
これを見てください、それはあなたを助けるかもしれません、http://stackoverflow.com/questions/7993263/viewbag-viewdata-and-tempdata –