繁体   English   中英

ASP.NET MVC5 json值绑定到脚手架

[英]Asp.net MVC5 json value binding to scafolding

我正在使用SyncFusion Asp.Net MVC网格,在此我尝试在服务器端进行过滤,并且发送到服务器的json如下所示

但是在ViewModel中,对象属性以null的形式出现而不是绑定

杰森

{"select":["Area","Id"],"where":[{"isComplex":false,"field":"Area","operator":"startswith","value":"test","ignoreCase":true}],"sorted":[{"name":"Area","direction":"ascending"}]}

我创建了如下模型,并将其传递给控制器​​,但未绑定。

 public class UserViewModel
    {
        public int skip { get; set; }
        public int take { get; set; }
        public Sort sorted { get; set; }
        public string[] group { get; set; }
        //Grid Action Params;
        public string action { get; set; }
        public string key { get; set; }
        public string keyColumn { get; set; }
        public string[] select { get; set; }
        public Search search { get; set; }
        public Where where { get; set; }
        public ApplicationUser value { get; set; }
    }

    public class Where
    {
        public bool isComplex { get; set; }
        public string field { get; set; }
        public string @operator { get; set; }
        public string @value { get; set; }
        public bool ignoreCase { get; set; }

    }
    public class Sort
    {
        public string name { get; set; }
        public string direction { get; set; }
     //   "sorted":[{"name":"Area","direction":"ascending"}],"group":["Area"]
    }

    public class Search
    {
        public string[] fields { get; set; }

        public string @operator { get; set; }

        public string key { get; set; }

        public bool ignoreCase { get; set; }
    }

控制器方式

 public async Task<ActionResult> DataSource(UserViewModel editParams)
   {

   }

您发送的JSON似乎根本与您的视图模型不匹配:

{
    "select": [
        "Area",
        "Id"
    ],
    "where": [
        {
            "isComplex": false,
            "field": "Area",
            "operator": "startswith",
            "value": "test",
            "ignoreCase": true
        }
    ],
    "sorted": [
        {
            "name": "Area",
            "direction": "ascending"
        }
    ]
}

考虑编写一个符合以下结构的视图模型:

public class UserViewModel
{
    public string[] Select { get; set; }
    public Where[] where { get; set; }
    public Sorted[] sorted { get; set; }
}

public class Where
{
    public bool IsComplex { get; set; }
    public string Field { get; set; }
    public string Operator { get; set; }
    public string Value { get; set; }
    public bool IgnoreCase { get; set; }
}

public class Sorted
{
    public string Name { get; set; }
    public string Direction { get; set; }
}

现在您的控制器操作可以将此视图模型用作参数:

public async Task<ActionResult> DataSource(UserViewModel editParams)
{
    ...
}

我对您似乎正在使用的SyncFusion Asp.Net MVC grid不熟悉,但是您应该确保Content-Type: application/json请求HTTP标头也与AJAX请求一起发送,以便ASP.NET MVC模型绑定程序知道从客户端发送的内容类型。 使用Web浏览器的开发人员工具栏或Fiddler之类的工具来检查从客户端发送的请求,并确保存在此标头。 否则,将不会绑定视图模型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM