asp.net mvc:如何在Ajax数据中传递可空的布尔值

时间:2018-03-07 09:51:26

标签: c# asp.net-mvc-5 asp.net-ajax

我有一个网格,我通过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 =='真'; }   } });

现在我已经改变了一切来传递字符串并手动将字符串转换为布尔值......但这似乎不是最好的事情。

0 个答案:

没有答案