gpt4 book ai didi

c# - Razor if 语句的奇怪结果

转载 作者:行者123 更新时间:2023-11-28 01:55:50 28 4
gpt4 key购买 nike

我有一个部分 View ,在某些情况下显示不同的按钮。然而,当我更改此 if 语句时,我会得到不同的结果,即使我相信这些 if 语句在技术上做同样的事情。我该如何解决这个问题以使 if 语句完全发挥作用?如果需要的话,我也会发布整个 View 。请在评论中请求!

基本上,当我切换数据库值以在 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 函数中放置了一个警报,警报就会消失 =/

当我将部分 View 更改为

我更改的部分 View :

    @if(ViewBag.ButtonStatus == 1) 
{
....
//display 1 or 2 buttons
....
....
}
else {
....
// do not display buttons
....
}

即使 ButtonStatus = 1,也不会显示任何按钮。我在 if 语句的 else 部分放置了一个警报,然后警报弹出。但当 ButtonStatus = 1 时,不应调用 else 部分

Controller :

        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;
}
}
}

最佳答案

尝试将 ViewBag.ButtonStatus 转换为 View 中的字符串,看看它是否捕获它。我不是 100% 确定,但尝试一下。像这样的东西... @if(ViewBag.ButtonStatus.ToString() == "1")

关于c# - Razor if 语句的奇怪结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19143827/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com