Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Razor if语句的奇怪结果_C#_Javascript_Jquery_Asp.net Mvc_Razor - Fatal编程技术网

C# Razor if语句的奇怪结果

C# Razor if语句的奇怪结果,c#,javascript,jquery,asp.net-mvc,razor,C#,Javascript,Jquery,Asp.net Mvc,Razor,我有一个局部视图,在某些情况下显示不同的按钮。然而,当我改变这个if语句时,我得到了不同的结果,尽管我相信这些if语句在技术上做了相同的事情。我如何解决这个问题,使if语句完全起作用?如果需要,我也会发布整个视图。请在评论中请求 基本上,当我切换数据库值以在0和1之间切换“ButtonStatus”时,我希望切换在if语句中要执行的操作 我的部分观点是: @if(ViewBag.ButtonStatus != 0) { ....

我有一个局部视图,在某些情况下显示不同的按钮。然而,当我改变这个if语句时,我得到了不同的结果,尽管我相信这些if语句在技术上做了相同的事情。我如何解决这个问题,使if语句完全起作用?如果需要,我也会发布整个视图。请在评论中请求

基本上,当我切换数据库值以在0和1之间切换“ButtonStatus”时,我希望切换在if语句中要执行的操作

我的部分观点是:

    @if(ViewBag.ButtonStatus != 0) 
    {
            ....
            //display 1 or 2 buttons
            ....
            ....
    }
    else {
            ....
            // do not display buttons
            ....
    }
    @if(ViewBag.ButtonStatus == 1) 
    {
            ....
            //display 1 or 2 buttons
            ....
            ....
    }
    else {
            ....
            // do not display buttons
            ....
    }
当前使用此if语句时,显示1或2个按钮工作正常(ButtonStatus=1)。但是,当ButtonStatus=0时,仍显示2个按钮。也就是说,逻辑永远不会进入if语句的else部分。我甚至在GrabGhCsStatus函数中添加了一个警报,警报就会消失=/

当我将局部视图更改为

我改变了部分观点:

    @if(ViewBag.ButtonStatus != 0) 
    {
            ....
            //display 1 or 2 buttons
            ....
            ....
    }
    else {
            ....
            // do not display buttons
            ....
    }
    @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;
                }
            }
        }
公共静态类GhCsStatusProvider
{
公共静态字典GetGhCsStatus()
{
使用(Entities db=new Entities())
{
int按钮状态;
System.Data.Objects.ObjectParameter CsOut=新的System.Data.Objects.ObjectParameter(“CsStatus”,typeof(int));
System.Data.Objects.ObjectParameter GhOut=新的System.Data.Objects.ObjectParameter(“GhStatus”,typeof(int));
System.Data.Objects.ObjectParameter CsRunValue=新的System.Data.Objects.ObjectParameter(“CSRunningValue”,typeof(int));
System.Data.Objects.ObjectParameter GhrungValue=新的System.Data.Objects.ObjectParameter(“GHRunningValue”,typeof(int));
int r=db.proc_GhCsStatus(CsOut、GhOut、CsRunValue、GhRunValue);
字典状态=新建字典();
Status.Add(“CsStatus”,(int)CsOut.Value);
添加(“GhStatus”,(int)GhOut.Value);
Status.Add(“CheckIfCsIsRunning”,(int)CsRunValue.Value);
添加(“CheckIfGhIsRunning”,(int)GhRunValue.Value);
如果(状态[“CheckIfCsIsRunning”]=0&&Status[“CheckIfGhIsRunning”]=0)
{
按钮状态=0;
Status.Add(“ButtonStatus”,ButtonStatus);//0-->不显示
}
其他的
{
如果(状态[“CheckIfCsIsRunning”]==1 | |状态[“CheckIfGhIsRunning”]==1)
{
按钮状态=1;
Status.Add(“ButtonStatus”,ButtonStatus);//1-->显示
}
}
返回状态;
}
}
}

尝试将视图中的ViewBag.ButtonStatus转换为字符串,查看是否捕捉到它。我不是百分之百肯定,但是试一试。像这样的@如果(ViewBag.ButtonStatus.ToString()=“1”)

请尝试将视图中的ViewBag.ButtonStatus转换为字符串,以查看是否捕捉到它。我不是百分之百肯定,但是试一试。像这样的@如果(ViewBag.ButtonStatus.ToString()=“1”)

尝试记录或仅在视图中输出
ViewBag.ButtonStatus
。我猜它没有在您的提供者中设置,并且值既不是
0
也不是
1
。我创建了一个以JSON格式输出ButtonStatus的视图,当我切换数据库值时,它确实会在该视图中的0和1之间切换=[您是否调试了代码并逐步检查了所有值?我首先检查了ButtonStatus,因为这决定了if语句的发生位置。我在创建的testview中获得的ButtonStatus的JSON值输出正确,但当我将其传递到if语句视图时,似乎if语句ent工作不正常哈哈,或者像你说的0或1一样。尝试登录或只是在你的视图中输出
ViewBag.ButtonStatus
。我猜它没有在你的提供者中设置,并且值既不是
0
也不是
1
。我创建了一个以JSON格式输出ButtonStatus的视图,并且在该视图中确实在0和1之间切换当我切换数据库值时=[您是否调试了代码并逐步检查了所有值?我首先检查了ButtonStatus,因为这决定了if语句的发生位置。我在创建的testview中获得的ButtonStatus的JSON值输出正确,但当我将其传递到if语句视图时,似乎if语句ent工作不正常哈哈,或者像你说的0或1。问题已经解决了!我忘记了我做了什么来解决它,虽然哈哈抱歉,但我认为你在正确的轨道上。我认为问题是由于某种类型的问题。问题已经解决了!我忘了我做了什么来解决它,虽然哈哈抱歉,但我认为你在正确的轨道上。我认为问题已经解决了对某种类型的问题