特定の状況下で異なるボタンを表示する部分ビューがあります。ただし、このifステートメントを変更すると、これらのifステートメントが技術的に同じことを行うと信じていても、異なる結果が得られます。if ステートメントが完全に機能するように、これを修正するにはどうすればよいですか? 必要に応じて、ビュー全体も投稿します。コメントでリクエストしてください!
基本的に、データベースの値を切り替えて「ButtonStatus」を 0 と 1 の間で切り替えると、if ステートメントでやりたいことを切り替えたいと思います。
私の部分的な見解:
@if(ViewBag.ButtonStatus != 0)
{
....
//display 1 or 2 buttons
....
....
}
else {
....
// do not display buttons
....
}
現在、この if ステートメントでは、1 つまたは 2 つのボタンを表示すると正常に動作します (ButtonStatus = 1)。ただし、ButtonStatus = 0 の場合、2 つのボタンがまだ表示されています。つまり、ロジックは if ステートメントの else 部分には入りません。GrabGhCsStatus関数内にアラートを入れても、アラートが鳴ります=/
部分ビューを
私の変更された部分ビュー:
@if(ViewBag.ButtonStatus == 1)
{
....
//display 1 or 2 buttons
....
....
}
else {
....
// do not display buttons
....
}
ButtonStatus = 1 の場合でも、ボタンは表示されません。if ステートメントの else 部分にアラートを配置すると、アラートがポップアップします。ただし、ButtonStatus = 1 の場合は、else 部分を呼び出すべきではありません
コントローラ:
public class GhCsStatusController : Controller
{
public ActionResult Index()
{
ViewBag.CheckIfCsIsRunning = GhCsStatusProvider.GetGhCsStatus()["CheckIfCsIsRunning"];
ViewBag.CheckIfGhIsRunning = GhCsStatusProvider.GetGhCsStatus()["CheckIfGhIsRunning"];
ViewBag.CsStatus = GhCsStatusProvider.GetGhCsStatus()["CsStatus"];
ViewBag.GhStatus = GhCsStatusProvider.GetGhCsStatus()["GhStatus"];
ViewBag.ButtonStatus = GhCsStatusProvider.GetGhCsStatus()["ButtonStatus"];
return View();
}
}
プロバイダー:
public static class GhCsStatusProvider
{
public static Dictionary<string,int> GetGhCsStatus()
{
using (Entities db = new Entities())
{
int ButtonStatus;
System.Data.Objects.ObjectParameter CsOut = new System.Data.Objects.ObjectParameter("CsStatus", typeof(int));
System.Data.Objects.ObjectParameter GhOut = new System.Data.Objects.ObjectParameter("GhStatus", typeof(int));
System.Data.Objects.ObjectParameter CsRunValue = new System.Data.Objects.ObjectParameter("CSRunningValue", typeof(int));
System.Data.Objects.ObjectParameter GhRunValue = new System.Data.Objects.ObjectParameter("GHRunningValue", typeof(int));
int r = db.proc_GhCsStatus(CsOut, GhOut, CsRunValue, GhRunValue);
Dictionary<string, int> Status = new Dictionary<string, int>();
Status.Add("CsStatus", (int)CsOut.Value) ;
Status.Add("GhStatus", (int)GhOut.Value);
Status.Add("CheckIfCsIsRunning", (int)CsRunValue.Value);
Status.Add("CheckIfGhIsRunning", (int)GhRunValue.Value);
if (Status["CheckIfCsIsRunning"] == 0 && Status["CheckIfGhIsRunning"] == 0)
{
ButtonStatus = 0;
Status.Add("ButtonStatus", ButtonStatus); // 0 --> do not display
}
else
{
if (Status["CheckIfCsIsRunning"] == 1 || Status["CheckIfGhIsRunning"] == 1)
{
ButtonStatus = 1;
Status.Add("ButtonStatus", ButtonStatus); // 1 --> display
}
}
return Status;
}
}
}