当我编写Javascript函数时,我相信惯例是使用pascalCase作为属性名(第一个单词的下一个首字母),但是在创建C#属性时,应该使用CamelCase(每个单词的首字母大写。)但是,两种语言都区分大小写,并且由于大小写不匹配,在将Javascript或C#对象序列化为JSON并返回时将导致问题。
我对在C#对象上添加属性以将C#CamelCase属性映射到Javascript pascalCase表单的方法感到满意;看起来很干净,明确,可以让我在使用每种语言编写时都保持“这种情况总是这样”的方法,我觉得这可以帮助我减少错误,并且喜欢一致性。但是,对于所生成的对象(例如,Entity Framework对象),这些对象在没有这些属性的情况下生成,如果我要添加它们,然后决定重新生成以拾取数据库更改,则这些属性将丢失。 (我正在使用Visual Studioo,ASP.NET MVC和数据库中的反向工程代码“ First”。)
我是所有这些技术的新手。我想就如何轻松地序列化这些对象向您提出建议,以便即使生成的对象也可以始终使用所需的大小写。在这种情况下,有没有办法做到这一切?
关于这个问题有很多问题,但是我不确定这个特殊的角度是否已经解决。
这是一个人为设计的示例,我在其中尝试尝试学习这些主题:
function Person(name, age)
{
this.name = name;
this.age = age;
return this;
}
$(document).ready(function () {
/* Finds all of the controls whose IDs begin with PushMeButton */
$("[id^=PushMeButton]").click(function () {
//var id = $(this).attr('id');
var url = '/Home/Ajax/';
var joe = new Person("Joe", 98);
$.ajax({
type: 'POST',
url: url,
dataType: 'json',
data: joe,
success: function (person) {
alert('im back');
alert(person.age);
},
error: function (xhr, ajaxOptions, error) {
alert(xhr.status);
alert('Error: ' + xhr.responseText);
}
});
});
});
//Server:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Newtonsoft.Json;
using Restaurant.Data;
namespace MyApp.Controllers
{
public class Person
{
[JsonProperty(PropertyName = "name")]
public string Name
{
get;
set;
}
[JsonProperty(PropertyName = "age")]
public int Age
{
get;
set;
}
}
public class HomeController : Controller
{
[HttpPost]
public string Ajax(Person person)
{
person.Name = "Mr. " + person.Name;
person.Age += 10;
string personJson = JsonConvert.SerializeObject(person);
return personJson;
}
}
}
参考方案
您可以使用ContractResolver
类的JsonSerializerSettings
属性:
var settings = new JsonSerializerSettings{ ContractResolver = new CamelCasePropertyNamesContractResolver() };
var s = JsonConvert.SerializeObject(object, settings);
var newObject = JsonConvert.DeserializeObject<type>(s, settings);
如果我得到url(''),我该如何使用另一个URL - javascript我是新手,正在写这篇文章,但是如果源上没有图像,那么我只有空白。有人可以告诉我,如果我正在获取背景图像,如何获取/images/no-image.jpg:url();这是我的代码:<div class="uk-clearfix uk-position-relative"> <div class="recipeb…
对ID为'abc%'的dom执行操作 - javascript我想对ID为'abc%'的DOM进行一些操作<a id='abc1'></a> <a id='abc2'></a> <a id='abc3'></a> <a id='abc4'></a>…
Jsonp没有出现``访问控制允许来源''错误 - javascript在我的PHP中,我喜欢这样来回显jsonp类型的“ json数据”echo $_GET['callback'] . '('.json_encode($arr).')'; 在我的js(angularjs)中,$http.get('http://example.com/app/?callbac…
获取JavaScript值到C#字符串 - javascript是否可以在C#中执行类似的操作?该值为“ 10/05/2014”string jsValue = javascript("$('#EstimatedStartDate').val()"); 参考方案 您能否更详细地阐明您要做什么。看来您正在尝试从javascript(客户…
如何使用JavaScript访问嵌入式ASP.NET GlobalResources? - javascript我正在开发一个遗留的ASP.NET项目,该项目正试图缓慢地进行调整,但是如果没有像巧克力手指屋一样塌陷的情况,我将无法进行重大更改。我试图为此找到解决方案,但由于术语的特定混合(“ javascript”,“ embedded”和/或“ resource”只是为我提供了有关如何嵌入.js文件的信息,而失败了)。 。),这可能是一种怪异的处理方式。该项目将Ap…