c# - jQuery.ajax() 发送的空值绑定(bind)到模型中的 "null"字段

标签 c# javascript jquery asp.net-mvc-3

我希望我的模型部分可以被我页面的 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>

一切正常,但有一部分:过滤器 的字符串属性不是null,而是"null"。我还没有触及我的 JavaScript 中的 filter 变量

型号:

public class SellOffersFilter
{
    public int MinAge { get; set; }
    public string Country { get; set; }
    public string City { get; set; }
}

Controller :

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 请求中,如果它们是 null?或者通过 jQuery.ajax() 传递 null 值的另一种简单方法?

最佳答案

这绝对是您应该在服务器上而不是在客户端上执行的操作。

让客户端不错误地使用“null”并不意味着客户端不能使用空值进行请求。

整个 AJAX 概念缺乏适当的验证,人们将验证推到客户端级别。 这是错误的。这意味着将来会有更多隐藏的服务器错误(供各种黑客利用)。

关于c# - jQuery.ajax() 发送的空值绑定(bind)到模型中的 "null"字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6113257/

相关文章:

javascript - 左浮动和右浮动之间的空间

c# - Json反序列化形式Dictionary<string, Dictionary<string, string>>

javascript - 用于禁用表单输入的 CSS

c# - 有没有办法从 C# 中的多维数组中获取数组?

需要 JavaScript 数学帮助

javascript ->>= 是什么意思?

javascript - 在所有jsp中显示下拉选择的值

javascript - 从 jQuery for ASP.NET 设置禁用输入的值

c# - 在按钮中检测到 ActionLink 存在潜在危险的 Request.Path 值

c# - 您能否以编程方式更改现有 Windows 服务的显示名称(和其他属性)?