我有一个网格,我通过ajax更新,因此在输入时会自动过滤。我的控制器返回一个partialviewresult。 (类似于http://mvc-grid.azurewebsites.net/Grid/GlobalSearch)。
现在我想传递一些额外的参数,并尝试将可空的布尔值传递给我的控制器,这似乎是我的问题。
测试时我经常
“SyntaxError:expect expression,got'?'”
或'True'等问题......
//...
var p = this.value;
delay(function () {
$('.mvc-grid').mvcgrid({
query: 'filterBasic=' + p,
data: { 'foo': @ViewBag.ParamFoo, 'bar': @ViewBag.ParamBar},
reload: true
});
//..
这是控制器签名:
public PartialViewResult FooGrid(string filterBasic, bool? foo = null, bool? foo = null)
将此更改为字符串时,它可以传递“”,“true”或“false”:
public PartialViewResult FooGrid(string filterBasic, string foo = null, string foo = null)
在这个方法中我手动转换值:
bool? ssfoo = null;
bool? ssbar = null;
if (!string.IsNullOrWhiteSpace(foo))
{
try
{
ssfoo = Convert.ToBoolean(foo);
}
catch { }
}
if (!string.IsNullOrWhiteSpace(bar))
{
try
{
ssbar = Convert.ToBoolean(bar);
}
catch { }
}
我试过使用转换器,但无法找到如何为可空的bool做到这一点。
$。ajaxSetup({ 转换器:{ 'bool':function(v){return v =='true'|| v =='真'; } } });
现在我已经改变了一切来传递字符串并手动将字符串转换为布尔值......但这似乎不是最好的事情。