【问题标题】:mvc3 - how can I keep a bool from being reset to falsemvc3 - 如何防止布尔值被重置为假
【发布时间】:2012-10-29 07:16:51
【问题描述】:

我在视图模型类中有一个布尔值。我有一个 if 语句检查布尔值是真还是假。如果为假,我将值设置为真并调用视图。在视图中,我有一个按钮,当点击更新并再次调用视图时。我的问题是加载视图时 bool 一直设置为 false 。我不知道为什么会这样。有没有办法阻止布尔值被改变?

【问题讨论】:

  • 如果您可以向我们展示您的代码中的一些相关部分,我们可以为您提供帮助

标签: c# asp.net-mvc-3


【解决方案1】:

MVC 是无状态的,因此模型实例不会在服务器调用之间持久化(除非您手动执行此操作,例如通过保存到数据库)。假设您的模型是您的操作方法的参数,那么在该模型中填充值的唯一方法是(1)该属性的默认值(在您的情况下为 false),(2)在请求或 (3) 如果它是提交表单上的输入。

如果重新加载视图的按钮进行表单提交,您可以通过这样做来保持该值

@Html.HiddenFor(m => m.BoolProperty)

在你看来。如果按钮通过调用 url 刷新页面,则必须将 bool 属性作为路由值添加到 url:

var url = Url.Action("MyAction", "MyController", new { m.BoolProperty });

【讨论】:

  • 我使用的视图是一个 .aspx 视图,其中输入标记的“值”属性已被使用。据我所知,我无法向输入标签添加属性。 <input type="submit" class="button" value="bvCalc" />
  • 由于您没有提供任何代码来实际审查超出 bcCalc 的代码,我们不知道它是如何计算的,所以这是一个非常好的答案。
  • 请记住,如果您使用的是 .cshtml,则此答案有效。如果您使用的是 .aspx,这将不起作用。
猜你喜欢
  • 2022-12-13
  • 2012-07-08
  • 2013-06-05
  • 1970-01-01
  • 2020-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-11
相关资源
最近更新 更多