相关疑难解决方法(0)

使用JSON.NET作为ASP.NET MVC 3中的默认JSON序列化程序 - 是否可能?

是否可以在ASP.NET MVC 3中使用JSON.NET作为默认的JSON序列化程序?

根据我的研究,似乎完成此任务的唯一方法是扩展ActionResult,因为MVC3中的JsonResult不是虚拟的 ......

我希望在ASP.NET MVC 3中有一种方法可以指定一个可插入的提供程序来序列化为JSON.

思考?

json.net jsonresult asp.net-mvc-3

100
推荐指数
7
解决办法
7万
查看次数

在ASP.NET MVC中设置默认的JSON序列化程序

我正在处理已部分转换为MVC的现有应用程序.每当控制器使用JSON ActionResult进行响应时,枚举将作为与字符串名称相对的数字发送.这听起来像默认的序列化程序应该是JSON.Net,它应该发送枚举,因为它们的名称与整数表示相反,但事实并非如此.

我是否缺少将其设置为默认序列化程序的web.config设置?或者是否有其他需要更改的设置?

c# asp.net-mvc json.net asp.net-mvc-4

57
推荐指数
2
解决办法
6万
查看次数

MVC JsonResult camelCase序列化

我试图让我的动作返回一个JsonResult,其所有属性都在camelCase中.

我有一个简单的模型:

public class MyModel
{
    public int SomeInteger { get; set; }

    public string SomeString { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

一个简单的控制器动作:

public JsonResult Index()
    {
        MyModel model = new MyModel();
        model.SomeInteger = 1;
        model.SomeString = "SomeString";

        return Json(model, JsonRequestBehavior.AllowGet);
    }
Run Code Online (Sandbox Code Playgroud)

现在调用此操作方法将返回包含以下数据的JsonResult:

{"SomeInteger":1,"SomeString":"SomeString"}
Run Code Online (Sandbox Code Playgroud)

对于我的用途我需要动作返回camelCase中的数据,不知何故这样:

{"someInteger":1,"someString":"SomeString"}
Run Code Online (Sandbox Code Playgroud)

有没有优雅的方法来做到这一点?

我正在寻找可能的解决方案,并找到MVC3 JSON序列化:如何控制属性名称?他们将DataMember定义设置为模型的每个属性,但我真的不想这样做.

我还找到了一个链接,他们说可以解决这类问题:http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-序列化#json_camelcasing.它说:

要使用camel大小写来编写JSON属性名,而不更改数据模型,请在序列化程序上设置CamelCasePropertyNamesContractResolver:

var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
Run Code Online (Sandbox Code Playgroud)

此博客上的一个条目http://frankapi.wordpress.com/2012/09/09/going-camelcase-in-asp-net-mvc-web-api/也提到了这个解决方案并声明您可以简单地将其添加到RouteConfig.RegisterRoutes来解决此问题.我尝试过,但我无法使它工作.

你们有什么想法我做错了吗?

asp.net-mvc serialization json camelcasing

31
推荐指数
2
解决办法
3万
查看次数

将C#对象列表转换为JavaScript对象数组

我正在使用jQueryUI的自动完成功能来搜索用户.文档说明我能够以下列格式使用数组作为数据源:[ { label: "Choice1", value: "value1" }, ... ]

我有一个基类,它提供了Users我的视图模型继承的唯一列表.视图模型具有以下功能:

public List<TestJson> GetUsers()
{
    return AvailableUsers
        .Select(u => new TestJson
            {
                Label = u.LastName + ", " + u.FirstName + "(" + u.UserId + ")",
                Value = u.UserId
            }).ToList();
}

public class TestJson
{
    public string Label { set; get; }
    public string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在我看来,我使用上面这样:

var userNameList = @Html.Raw(Json.Encode(Model.GetUsers()));

$("#UserName").autocomplete({
    source:userNameList 
});
Run Code Online (Sandbox Code Playgroud)

原来userNameList是这样出现的:

[ { "Label": "Choice1", "Value": …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc jquery jquery-ui

11
推荐指数
2
解决办法
3万
查看次数

jQgrid更改参数发送到服务器

我正在使用cookie来加载用户以前的排序和分页选项.我想获取这些保存的值,并将它们设置为服务器接收的参数.

我想改变的参数如下,(行通过prmNames替换行)

/&max=20&page=1&sidx=&sord=asc

我尝试过使用:

   $.extend($.jgrid.defaults, {
    sidx:"fName",
    sord:"desc",
    page:2,
    rows:10});
Run Code Online (Sandbox Code Playgroud)

和变化:

      beforeRequest:function(){
        $('#grid').jqGrid('setGridParam', {
            sidx: "fName",
            sord: "desc",
            page: 2,
            max: 10
        });

    }
Run Code Online (Sandbox Code Playgroud)

它更改了page使用$ .extend($.jgrid.defaults ...的值),但我无法更改其他参数.

jqgrid

2
推荐指数
1
解决办法
5230
查看次数