【发布时间】:2012-10-18 07:46:29
【问题描述】:
背景
我在视图模型类中有一个布尔值。我有一个 if 语句检查布尔值是真还是假。如果为假,我将值设置为真并调用视图。在视图中,我有按钮,当点击更新并再次调用视图时。我的问题是加载视图时 bool 一直设置为 false。我不知道为什么会这样。有没有办法阻止布尔值被改变?
尝试
我知道 MVC 是无状态的。
我使用的视图是一个 .aspx 视图,其中输入标记的“值”属性已被使用。所以我无法更新提交按钮的值。
<input type="submit" class="button" value="bvCalc" />
问题
无论以何种方式,我都希望保持 bool 的状态。我不知道该怎么做,我不确定目前最好的做法是否是
- 在视图中使用隐藏字段
- 构建一个 HTML Helper Extension,将 bool 从 true 更新为 false
- 返回修改后的值,并将模型信息发送回控制器,以便我可以评估 if 语句中的数据。
【问题讨论】:
-
你不能通过查询字符串将布尔值传回你的控制器吗?提交时在表单的 routevalues 中传递。它位于 @Html.BeginForm() 辅助方法的重载之一中。
-
感谢您的建议,但管理层不允许我们在此项目上使用查询字符串。需要尽可能单页应用,但再次感谢。
-
您应该指定 FormMethod.Post,或者为此使用会话变量。 Post 可能会更好,因此您不必每次都设置和擦除变量。
-
重新阅读您的评论...“尽可能单页应用程序”是什么意思?如果您使用查询字符串回发到同一个控制器,然后重定向到同一个视图,那不就是一个单页应用程序吗?如果您不想回发,那么您可以使用 ajax 调用将布尔值回发到您的控制器,并根据控制器的响应使用局部视图来设置您的页面。
-
抱歉耽搁了......我一直在尽我所能来完成这项工作......到目前为止没有运气......关于管理“单页应用程序”评论......只是意味着用户不允许在 url 中看到除域名之外的任何内容。
标签: c# asp.net-mvc-3 html-helper