我希望能够将任何类型的数据从javascript发送到C#。基本上,我试图通过包含此对象的AJAX调用从Javascript端发送JSON对象 -
AnObject = new Object;
AnObject.value = anyValue;
$.ajax({
type: "POST",
url: "myURL",
data: "{ 'myObject':" + JSON.stringify(AnObject) + "}",
dataType: 'json',
success: function (data) {
//do something
}
});
anyValue可以是int,string,array,associative array,date等。
在C#方面,我需要一个像 - 这样的课程public AnyClass {
DataType(?) value;
}
public ActionResult acceptData(AnyClass myObject) {
Here, the data should be deserialized correctly depending on it's type into DataType(?)
}
这可能吗?我确定C#中有一些泛型类型可供我使用吗?
答案 0 :(得分:1)
从技术角度来看,这是可能的。但是你必须为自己找出几个重要的细节:
如果您愿意说创建的所有对象确实需要是POCO风格的对象,那么这就变得非常简单了:
public ActionResult acceptData() {
Type type = FigureOutWhatTypeToUse();
object instance = Activator.CreateInstance(type);
// This allows ASP.NET MVC's model binding to do the dirty work,
// initializing the properties of your instance based on the submitted
// parameters.
TryUpdateModel((dynamic) instance, "myObject");
}
如果要传入数组,请定义一个对象类型,该对象类型具有包含数组的属性。这样,MVC可以了解该属性应该是一个数组并相应地绑定它。
PS - 这似乎更具可读性且不易出错:
data: JSON.stringify({ myObject : AnObject }),
答案 1 :(得分:1)
看看如何将JSon中的对象序列化和反序列化为它们的对应类型。 这很简单: