我有一个局部视图,在某些情况下会显示不同的按钮。但是,当我改变这个if语句时,我会得到不同的结果,即使我相信这些if语句在技术上做同样的事情。我怎么能解决这个问题,以便if语句完全正常运行?如果需要,我也会发布整个视图。请在评论中提出要求!
基本上,当我切换我的数据库值以在0和1之间切换“ButtonStatus”时,我想在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;
}
}
}
答案 0 :(得分:1)
尝试将ViewBag.ButtonStatus转换为View中的字符串,以查看它是否捕获了它。我不是百分百肯定但是试一试。像这样...... @if(ViewBag.ButtonStatus.ToString()==“1”)