相关疑难解决方法(0)

MVC 4中正确的JSON序列化

我想让JSON'正确'序列化(camelCase),并且能够在必要时更改日期格式.

对于Web API,它非常简单 - 在Global.asax中,我执行以下代码

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

这个代码在管道级别按照我喜欢的方式处理序列化.

我想在MVC 4中完成同样的事情 - 从控制器操作方法返回的任何JSON都要正确序列化.通过一点搜索,我发现以下代码将引入Global.asax应用程序启动:

HttpConfiguration config = GlobalConfiguration.Configuration;
Int32 index = config.Formatters.IndexOf(config.Formatters.JsonFormatter);
config.Formatters[index] = new JsonMediaTypeFormatter
{
     SerializerSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }
};
Run Code Online (Sandbox Code Playgroud)

它似乎执行正常,但当我从控制器返回JSON时,它都是PascalCased.我的动作方法的一个简单示例:

private JsonResult GetJsonTest()
{
    var returnData = dataLayer.GetSomeObject();
    return Json(returnData, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)

我错了吗?知道如何在管道级别实现这一目标吗?

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

43
推荐指数
3
解决办法
6万
查看次数

持久化jqGrid列首选项

我的ASP.NET MVC 3应用程序上有一些jqGrids,它们有很多列.我在列定义中添加了以下内容,以默认隐藏一些列:

colModel: [
   { name: 'IceCreamID', hidden: true},
   { name: 'RecipeID', hidden: true }
Run Code Online (Sandbox Code Playgroud)

这很好用.这些列在我的网格上不可见.

然后我添加了这个来实现列选择器:

var grid = $('#icecreamGrid');
grid.jqGrid('navButtonAdd', '#icecreamPager',
{ caption: "Columns", buttonicon: "ui-icon-calculator",
  title: "Choose Columns",
  onClickButton: function() {
     grid.jqGrid('columnChooser');
  }
});
Run Code Online (Sandbox Code Playgroud)

太棒了,现在提出了专栏选择器.然后我将以下内容添加到我从未希望在列选择器中显示的列中:

colModel: [
   { name: 'IceCreamID', hidden: true, hidedlg: true},
Run Code Online (Sandbox Code Playgroud)

所以我现在可以隐藏/显示列就好了.现在,您如何坚持这些信息?D B?作为一个cookie?另一种方式?是否有一种首选的方式来存储这种真正是用户偏好的信息,而不是与数据本身相关的信息?


更多信息

根据Oleg在下面的评论,我想提供更多信息.

这里的要点是我有10-15列的网格,可以根据用户的偏好显示.举一个简单的例子,我的一个网格有以下9列:

IceCream|ShortName|HasNuts|SugarAdded|LimitedRun|PromoItem|Facility|FirstRun|LastRun
Run Code Online (Sandbox Code Playgroud)

用户可以根据个人喜好隐藏/显示这9列中的任何一列.

我想要做的是提供一种方法来持久保存特定用户想要查看的列,以便他/她不必在每次显示带有该网格的页面时重新选择这些列.

asp.net-mvc jqgrid asp.net-mvc-3

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

标签 统计

asp.net-mvc ×2

asp.net ×1

asp.net-mvc-3 ×1

asp.net-mvc-4 ×1

c# ×1

jqgrid ×1

json ×1