jQuery.ajax发送的空值绑定到模型中的“空”字段

问题描述

| 我希望页面的JavaScript可以访问模型的一部分,因此我将以下脚本标记包括在模型中:
<script type=\"text/javascript\">
var filter = @Html.Raw(@Json.Encode(Model.Filter));
</script>
filter
对象是用于后续查询的过滤器,这些查询通过AJAX完成:
<script type=\"text/javascript\">
function DownloadData() {
    $.ajax({
        url: \'@Url.Action(\"GetData\")\',type: \"POST\",data: filter,success: function (data) {
        }
    });
}
</script>
一切正常,但有一部分:
filter
的字符串属性不是properties4ѭ,而是
\"null\"
。我还没有触摸JavaScript中的
filter
变量 模型:
public class SellOffersFilter
{
    public int MinAge { get; set; }
    public string Country { get; set; }
    public string City { get; set; }
}
控制器:
public ActionResult SellOffersGetPage(SellOffersFilter filter)
{
    //here both filter.Country and filter.City are equal to \"null\"
}
POST形式类似于
MinAge=0&Country=null&City=null
,JavaScript调试器显示
filter.Country
等于
null
,而不是
\"null\"
字符串。 有没有一种方法可以强制jQuery将过滤器的字段不打包到POST请求中(如果它们是4)?还是通过
jQuery.ajax()
传递through4ѭ值的另一种简单方法?     

解决方法

这绝对是您应该在服务器上而不是在客户端上执行的操作。 使客户端错误地不使用\“ null \”并不意味着客户端不能使用空值进行请求。 整个AJAX概念缺乏适当的验证,人们将验证推向了客户端级别。错了这意味着将来会出现更多隐藏的服务器错误(供各种黑客利用)。     ,我没有弄清楚答案,所以我不得不在服务器上用空字符串手动替换空值。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...