首页 新闻 赞助 找找看

mvc表单如何绑定bool类型的属性或变量

0
[已解决问题] 解决于 2014-08-30 09:31

1.Test是我写的一个类,属性Tester是bool类型;

2.我在Action()里赋值Tester=true;

3.我想通过post方式提交到服务端,并取得Tester值。所以我放在了form表单里;

<form method="POST" action="">
  <input name="Tester" value="@Model.Tester" />
  <input type="submit" />
</form>

结果Tester值是"value"。

不知道的东西在眼里总是奇怪的。麻烦大家解释下。。。

mvc
paulhe的主页 paulhe | 初学一级 | 园豆:73
提问于:2014-08-28 17:25
< >
分享
最佳答案
0

这个问题是不可能的,是否你代码有问题?贴出你相对完整的代码看看。

奖励园豆:5
519740105 | 大侠五级 |园豆:5810 | 2014-08-28 18:28

页面代码:

@model MvcTest.Controllers.Test
@{
Layout = null;
//这个地方得到是true;
bool result = Model.Tester;
}

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>表单提交</title>
</head>
<body>
<form method="POST" action="">
<input name="Tester" value="@Model.Tester" />
<input type="submit" />
</form>
</body>
</html>

后端代码:

方法:

public ActionResult FormPost()
{
      Test model = new Test();
      model.Tester = true;
      return View(model);
}

model:

public class Test
{
       public bool Tester { get; set; }
}

运行这个view看到:

 

paulhe | 园豆:73 (初学一级) | 2014-08-29 11:59

@paulhe: 直接<input name="Tester" value="@result" />呢?从你的代码,明显不应该是这样的。

此外,换一个数据,比如name,类型字符串,又是什么结果?换乘整数呢?

如果字符串、整数都OK,那就邪门了。

如果整数与字符串也是显示value,就可能是你的VS编译系统的问题,可能需要把MVC重新安装一下。

519740105 | 园豆:5810 (大侠五级) | 2014-08-29 12:04

@519740105: 我测过了,换成result,结果还是value。字符串和整型是正常的。

另外测试发现一组数据。

同样是bool类型的变量为true时,

在asp.net里的input,value显示true;

在razor视图里,Model.Tester的值跟html标签属性有关:

会出现:

value="value",

id="id",

name="name"

在别人的机器上也是哦。不理解。。。有兴趣你可以试下。

paulhe | 园豆:73 (初学一级) | 2014-08-29 13:18

@paulhe: 我试了,不仅仅是input,让任何html对象的属性设置值为true时,都会出现这个现象,而且这个值的内容也跟对应属性的名称的大小写有关系,同时,如果是false时,这个属性是不会输出的。

 

目前能解决这个问题的办法是:

@true.ToString()

 

这个应该是MVC的@语法的有意为之,但怎么样规避,还有待研究。

519740105 | 园豆:5810 (大侠五级) | 2014-08-29 13:59

@519740105: 多亏你的提点,value="Model.Tester.ToString()",解决了这个问题。

我以为ToString()后会转成字符串,实际上post提交到后台是true。

感谢。

paulhe | 园豆:73 (初学一级) | 2014-08-30 09:30
其他回答(2)
0

求解...

晓菜鸟 | 园豆:2594 (老鸟四级) | 2014-08-28 17:28
0

结果Tester值是"value"。

这个value是你在html网页源代码中看到的还是在提交到后台后看到的

龙卷风摧毁停车场! | 园豆:210 (菜鸟二级) | 2014-08-28 18:22

是页面中input的value值,我把代码和运行后的效果图贴下面了。

支持(0) 反对(0) paulhe | 园豆:73 (初学一级) | 2014-08-29 12:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册