的背景 的
我在视图模型类中有一个bool。我有一个if语句检查bool是真还是假。如果为false,我将值设置为true并调用视图。在视图中,我有一个按钮,当点击更新并再次调用视图时。我的问题是加载视图时bool一直设置为false。我不知道为什么会这样。有没有办法阻止bool被改变?
的尝试 的
我知道MVC是无国籍的。
我已经获得使用的视图是一个.aspx视图,其中已经使用了输入标记的“value”属性。所以我无法更新“提交”按钮的值。
<input type="submit" class="button" value="bvCalc" />
的问题 的
无论如何,我都希望坚持布尔的状态。我不知道该怎么做,我不确定此时最好做的事情是
答案 0 :(得分:1)
值从视图到控制器的方式是ModelBinding
。如果你不熟悉它是如何工作的,你可能希望Google能够更好地理解它。
作为一个简单的例子,让我们说你想要传递bool的控制器中的action方法如下所示:
public ActionResult MyAction(MyViewModel model)
{
//.. do something here.
}
,您的ViewModel如下所示:
public class MyViewModel
{
public bool MyBool { get; set; }
// ...more properties...
}
只要您的视图具有某种字段(例如文本框,复选框,隐藏字段),其名称与属性名称(在本例中为“MyBool”)完全匹配,并且具有将转换为属性的值(在此示例中,字符串'True'可以映射到布尔true
值) - ModelBinding
将能够在控制器操作中使用model.MyBool
填充true
。
如果使用内置帮助器方法,则无需担心在field元素中获取正确的名称/值 - MVC将为您执行此操作
e.g。 @Html.HiddenFor(model => model.MyBool)
将呈现类似
<input type="hidden" id="MyBool" name="MyBool" value="True" />
答案 1 :(得分:0)
使用bool?在你的模型中。如果没有它,bool将始终默认为false。