【问题标题】:Public String becoming null after being set [closed]公共字符串在设置后变为空[关闭]
【发布时间】:2018-01-16 18:35:55
【问题描述】:

我很难理解这个问题。

我在方法中设置 dataTest 的值,我在方法中插入了一个断点,我可以看到 dataTest 的值已设置。但是在单独的方法中,dataTest 的值为 null? 这都是在同一个控制器中完成的

 public string dataTest { get; set; }
 [HttpPost]
 public void Test()
 {
     dataTest = 123;
 }

 [HttpPost]
 public void Test1()
 {
     Debug.WriteLine(dataTest);
 }

这是什么原因造成的?

【问题讨论】:

  • 可能有很多事情,我们需要你的代码来了解更多
  • 请添加minimal reproducible example。另外,ASP.NET Core 和 ASP.NET MVC 5 是不相关的、不兼容的技术,你使用的是其中一种,所以只使用一个标签。
  • 你如何调用这些方法? HttpPost 暗示它们被两个 separate 请求调用。为了在请求中保留一个值,您必须将它保留在某个地方。会话、数据库、cookie 等。类实例在请求之间不会保留在内存中。
  • preventDefault 就服务器而言没有做任何事情。如果您要进行两个单独的调用,则它们没有相同的对象

标签: c# asp.net


【解决方案1】:

两次调用的对象实例不同。除非您将属性 static 设置为保存对同一对象的引用,否则每次到达端点时都会重新创建它。

【讨论】:

  • 我什至不建议在这里使用依赖注入,但如果你要这样做,请至少说“作为单例实例”,否则会出现同样的问题
  • @CamiloTerevinto 好点
猜你喜欢
  • 2013-11-16
  • 2014-01-14
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-14
  • 1970-01-01
相关资源
最近更新 更多