【发布时间】:2017-04-21 16:50:31
【问题描述】:
我有一个像这样的 C# 视图类:
public class DataObject
{
public int Number { get; set; }
public dynamic Data { get; set; } // <-----
}
在这样的 MVC 方法中使用
[HttpPost]
public ActionResult SaveData(DataObject request) {}
问题是我想在DataObject 类的Data 属性中接收多种类型的对象。
也就是说,我希望这两个都作为有效的输入 json 对象。
类型 1
{
Number: 1,
Data: {
Text: "a text"
}
}
类型 2
{
Number: 2,
Data: {
Value: 1,
Options: { 1, 2, 3, 4 }
}
}
有没有办法用动态对象或其他类型的 json 库魔法来做到这一点(只是让属性动态没有任何作用)?
我要做的就是将此数据存储在 SQL 列 nvarchar 字段中,并在稍后返回(通过实体框架)。
另一种解决方案是为每种类型的输入创建一个视图模型,但由于创建所有这些视图会有 100 种变体,并且相应的输入方法维护起来很麻烦。
根据评论请求添加更多详细信息:该方法通过 Angular 调用。
pub.Save = function (jsonData) {
return $http(
{
method: "POST",
url: baseURL + "/Save",
data: { request: jsonData}, // tried this for string
// data: jsonData, // original way
timeout: 30000
}
)
.then(function (result) {
return result.data;
});
}
【问题讨论】:
-
只接受字符串,稍后再转换,那么可以接受任何Json字符串吗?
-
仅将数据设置为字符串属性无法捕获值。它始终为空。
-
不是整个方法输入的数据,如 SaveData(string jsonstring)
-
@Krishna 尝试将输入参数更改为字符串
public ActionResult SaveData(string request),但当我这样做时,请求始终为null。 -
@JensB:这就是为什么这是评论而不是答案;)
标签: c# json asp.net-mvc