ユーザーがフォームを無視してウェブページに直接行くと、今日の日付をデフォルト値にします。このコントローラをクリーンアップするにはどうすればいいですか?
しかし私は、これらの2つのコードの間にコードをコピーしてコピーするのは悪いコードだと思っています。
このコードをクリーンアップするにはどうすればよいですか?
最初の結果()はすべて自分でobjdate1.DateStartを設定しています。
[HttpPost]では、フォームからobjdate1.DateStartを取得します。
public ActionResult Results()
{
Date1 objdate1 = new Date1();
objdate1.DateStart = DateTime.Now;
var DataContext = new BalanceDataContext();
DateTime earliestDate = objdate1.DateStart.Value.AddMonths(-13);
//Tons of Code omitted Here ---------------------------
ViewBag.Metric = 1;
ViewBag.Message = objdate1.DateStart.Value.ToString("yyyy-MMMM-dd");
ViewBag.Title2 = "% of Electric Estimated";
ViewBag.Descript = "Percentage of estimated electric bills per Month.";
return View(new QueryView { Date2 = totalbills, Date1 = totalEstimated });
}
[HttpPost]
public ActionResult Results(Date1 objdate1)
{
var DataContext = new BalanceDataContext();
DateTime earliestDate = objdate1.DateStart.Value.AddMonths(-13);
//Exact same Code omitted Here ---------------------------
ViewBag.Metric = 1;
ViewBag.Message = objdate1.DateStart.Value.ToString("yyyy-MMMM-dd");
ViewBag.Title2 = "% of Electric Estimated";
ViewBag.Descript = "Percentage of estimated electric bills per Month.";
return View(new QueryView { Date2 = totalbills, Date1 = totalEstimated });
}
'objdate1'をとり、ActionResultを返す第3の関数を書いてください。 –
あなたは正確に何を達成しようとしていますか?対応する取得アクションとポストアクションが非常に多くのコードを共有する理由がわからないからです。そのデータを画面に反映するビューモデルも導入する必要があります。なぜ私はビューモデルに2つのフィールドを入れてViewBagに4つのフィールドを持っているのか分かりません。ビューモデルでそれらをすべて保持してみませんか? – Fran
@Fran単純な文字列をビューに送るためには、Viewbagを好むだけです。個人の好み。また、結果については以下を参照してください。私はすべてのコードを別のクラスに入れ、必要なときに呼び出すだけです。 –