我的 MVC 3 网站中有以下片段。
模型:
public class Item1
{
[Display(Name = "Family name")]
public string FamilyName { get; set; }
[Display(Name = "Given name")]
public string GivenName { get; set; }
}
控制器方法:
public string SaveAsIs(string form_section11)
{
// method 1 works
var viewModel = new JavaScriptSerializer().Deserialize<IDictionary<string, object>>(form_section11);
// method 2 gives empty viewModel2
var viewModel2 = new JavaScriptSerializer().Deserialize<Item1>(form_section11);
// method 3 gives empty item1
Mapper.CreateMap<IDictionary<string, object>, Item1>();
Item1 item1 = Mapper.Map<IDictionary<string, object>, Item1>(viewModel);
}
我发回的值是代表我的模型的 JSON.stringified 结构。字符串(为便于阅读而设计)显示为:
"{
\"item1.FamilyName\":\"Smith\",
\"item1.GivenName\":\"Jane\"
}"
我想要做的是将字符串化的 JSON 转换为我的模型,但看不到如何做超出上述两次尝试或编写我自己的序列化程序 :-(
其他一切正常。任何人都有其他想法。谢谢。
更新 1
感谢 Darin,我有一个部分解决方案,即item1.
在使用之前将其删除JavaScriptSerializer
,如上所述。奇怪的是item1。在使用强类型模型时由 Razor、MVC 3 等添加。无论如何,我现在有一个解决方案 - 谢谢。
更新 2
在回答 Darin 下面的问题时,Item1 是我模型中的一个实体。模型看起来像:
public class ItemModel
{
public Item1 item1 {get; set;}
public Item2 item2 {get; set;}
}
视图@model ItemModel
与字段一起使用@Html.EditorFor(m => m.item1.FamilyName)
。这两个实体在同一个屏幕上以不同的形式出现,我将它们返回为
var form_section1Data = JSON.stringify($("#form_section1").formParams()); //item1
var form_section1Data = JSON.stringify($("#form_section1").formParams()); //item2
Ajax 调用包含:
data: JSON.stringify({
form_section1: form_section1Data,
form_section2: form_section2Data
}),
我简化了最初的问题(试图提供帮助:-))