繁体   English   中英

mvc3-将布尔值从视图返回到控制器

[英]mvc3 - return bool from view to controller

背景

我在视图模型类中有一个布尔。 我有一个if语句,检查布尔是对还是错。 如果为false,则将值设置为true并调用视图。 在视图中,我有一个按钮,单击该按钮可以更新并再次调用该视图。 我的问题是,加载视图时,布尔值始终设置为false。 我不知道为什么会这样。 有没有办法阻止布尔值被更改?

尝试次数

我知道MVC是无状态的。

我已使用的视图是一个.aspx视图,其输入标签的“值”属性已被使用。 因此,我无法更新“提交”按钮的值。

<input type="submit" class="button" value="bvCalc" />

无论如何,我都希望保持布尔状态。 我不知道该怎么做,我不确定此时最好的做法是

  1. 在视图中使用隐藏字段
  2. 构建一个HTML Helper Extension,将布尔值从true更新为false
  3. 返回修改后的值,并将模型信息发送回控制器,以便我可以评估if语句中的数据。

值从视图到控制器的获取方式是通过ModelBinding 如果您不熟悉此方法的工作原理,则可以通过Google对其进行更好的了解。

举个简单的例子,假设您要传递布尔值的控制器中的action方法如下所示:

public ActionResult MyAction(MyViewModel model)
{
  //.. do something here.
}

并且您的ViewModel看起来像这样:

public class MyViewModel
{  
   public bool MyBool { get; set; }
   // ...more properties...
}

只要您的视图具有某种字段(例如,文本框,复选框,隐藏字段),其名称与属性名称(在本例中为“ MyBool”)完全匹配,并且其值将转换为属性(在本示例中)字符串“ True”可以映射到布尔值trueModelBinding可以在您的控制器操作中填充model.MyBool true

如果您使用内置的辅助方法,则无需担心在字段元素中获得正确的名称/值-MVC会为您完成此操作

例如@Html.HiddenFor(model => model.MyBool)将呈现HTML类似

<input type="hidden" id="MyBool" name="MyBool" value="True" />

使用布尔? 在您的模型中。 没有它,布尔将始终默认为false。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM