gpt4 book ai didi

c# - 为什么这个变量得不到正确的值?

转载 作者:太空宇宙 更新时间:2023-11-03 14:42:02 24 4
gpt4 key购买 nike

我试图在 Controller 和 View 之间传递 boolean 值,但在一种特殊情况下它不起作用,我看不出我做错了什么。

在 Controller 中,我声明了一个变量,用一个表达式给它赋值,并将该值分配给 Session 对象。在 View 中,我从 session 中检索值并将其存储在一个新的 bool 中。我还在同一 Controller 和 View 中以这种方式创建了一些其他 boolean 值。出于某种原因,虽然其他 boolean 变量可以正常工作,但这个不能。

// In the controller:
bool isDatabaseRecipeRevisionSame = true;

// This evaluates to true:
isDatabaseRecipeRevisionSame = editedRecipe.Revision == savedRecipe.Revision;

Session["match"] = isDatabaseRecipeRevisionSame;


// In the view:
bool isRecipeRevisionSame = (bool)Session["match"];

// or:
bool isRecipeRevisionSame =Convert.ToBoolean(Session["match"]);

无论我是否将 session 对象转换或转换为 View 中的 boolean 值,结果都是错误的。如果我将同一个 session 对象转换为一个整数,我会得到一个零,而使用 ToString() 我会得到“False”。我不明白其中一些是如何按预期工作的,而这个却没有。有人可以建议吗?

提前致谢。

编辑:对评论的回复。

Recipe.Revision 变量是整数。 savedRecipe 从数据库中检索,编辑并在本地存储为 editedRecipe。在将编辑保存回数据库之前,再次从数据库中检索 savedRecipe.Revision 以确认自首次检索以来没有其他人更改过数据库版本。如果修订匹配,则编辑将保存到数据库中。

没有其他线程更改这些值,目前除了我之外也没有任何用户使用这个数据库。我今天实际上在一个方法中复制了这个问题,所以我认为 DBro 关于它是一个区分大小写的问题可能是正确的。自从我发布这个问题后,我已经更改了一些代码以使用 ViewBag,因此我可能不必进一步修改它。

感谢您的建议。

最佳答案

在您看来,请使用此 HttpContext.Current.Session 而不是 Session,如下所示:

// In the view:
var session = HttpContext.Current.Session["match"];
bool isRecipeRevisionSame = (bool)session;

关于c# - 为什么这个变量得不到正确的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56346989/

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