2017-10-27 9 views
0

私は、矢印ボタンを使って日々切り替えることができるアプリケーションを作っています。 asp.net mvcで。 (左矢印が1日後に移動することを確認してください) 私は単なる学生で、mvcとrazorとC#ではあまり進歩していません。asp.netボタンを使ってビューからコントローラにデータを渡す方法

私はビューバックでデータを渡そうとしていますが、コントローラは更新されたvarを読み取っていません。

CSHTMLコード

@using (@Html.BeginForm("Index", "Day", FormMethod.Post)) 
{ 
@Html.AntiForgeryToken() 

string CurrDay = ViewBag.CurrentDay.ToString(); 
@Html.Hidden("CurrentDay", CurrDay); 

<div class="DayWrapper"> 

    <input type="submit" name="Butteun1" value="<" class="DayButtons" style="border-right-width: 2px;" onclick="getElementById('CurrentDay').innerHTML = '1'" /> 
    <a href="../HourMonth"> 
     <div class="AgendaDayButton"> 
      <p> @ViewBag.CurrentDay.ToShortDateString() </p> 
     </div> 
    </a> 
    <input type="submit" name="Butteun2" value=">" class="DayButtons" style="border-left-width: 2px;" onclick="getElementById('CurrentDay').innerHTML = '-1'" /> 
</div> 

コントローラコード

[HttpGet] 
    public ActionResult Index(string sortOrder, int? customerIdFilter, int? projectIdFilter, string monthFilter, bool? totalsPerDay, int? CurrentEmployeeID, bool? missingDays, string Currentday) 
    { 
     totalsPerDay = GetCurrentTotalsPerDay(totalsPerDay); 
     missingDays = GetCurrentMissingDays(missingDays); 



     SetDefaultViewbag(sortOrder, monthFilter, totalsPerDay, CurrentEmployeeID, missingDays); 

     string CurryDay = ViewBag.CurrentDay.ToString(); 

     if (CurryDay == "1") 
     { 
      Day.AddDays(1); 
      return View(Day); 
     } 
     else if (CurryDay == "-1") 
     { 
      Day.AddDays(-1); 
      return View(Day); 
     } 

     return View(GetData(sortOrder, customerIdFilter, projectIdFilter, totalsPerDay, CurrentEmployeeID, missingDays)); 
    } 
+0

だから**正確に**問題はありますか? –

+0

あなたがボタンを押すと、 'currentday'が「1」または「-1」に変わります(ちょうど両方のボタンがvarを1に変えていることに気づきました)、そして表示された日付は変更されますが、 if else文のブレークポイント 'currentday'はまったく変更されていません。 –

答えて

0

は、私は簡単な解決策を提供することはできますか?私は、あなたがボタンのプレス上の日付を動的に変更することに伴う問題に対処するつもりです。これは私がこれにアプローチする方法です(非同期的に、非同期的なソリューションはより良いが、単純化のためには明らかです)。

動的に日付を変更し、基本的なビュー:

@model DateTime 

<h1>SCHEDULE for @Model</h1> 
<div class="btn btn-primary"> 
    @Html.ActionLink("Previous Day", "Index", new { datePassed = Model.AddDays(-1) }) 
</div> 
<div class="btn btn-primary"> 
    @Html.ActionLink("Next Day", "Index", new { datePassed = Model.AddDays(1) }) 
</div> 

対応するコントローラ:

public class HomeController : Controller 
{ 
    public ActionResult Index(DateTime? datePassed = null) 
    { 
     if (datePassed == null) datePassed = DateTime.Today; 
     return View(datePassed); 
    } 
} 

いずれかのボタンをクリックするたびに、それはのオフインクリメント新しい日付を渡す必要があります現在の日付を前後に移動してコントローラ上のアクションに戻し、新しい日付のインデックスページに戻します。あなたは本当にViewbagを気にする必要はありません。

+0

これは答えでした。私の場合、2つのモデルを使用することができなかったので、データを保存するためにクッキーを使用するようになりました。とにかくありがとう! –

関連する問題