Asp.net mvc 在ASP.NET MVC 3中,将强类型对象(而不是模型对象)作为参数从视图传递给控制器操作方法

Asp.net mvc 在ASP.NET MVC 3中,将强类型对象(而不是模型对象)作为参数从视图传递给控制器操作方法,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,是否可以在get或post请求中将强类型自定义对象从视图传递到控制器操作方法(而不是用于绑定视图中数据的模型对象)?。我有一个视图模型对象,它有一个“事件类型”属性,然后有几个其他属性作为事件参数。对于来自视图的每个post或get请求,我希望创建此视图模型对象的实例并传递事件类型(事件类型指示用户作为枚举执行的操作,并设置所需的属性)。 对象由模型绑定器创建,但不会填充值。但是如果我传递匿名对象,那么我可以提取值,但是我需要为匿名对象中的每个属性声明一个参数,这是我想要避免的 示例代码: @A

是否可以在get或post请求中将强类型自定义对象从视图传递到控制器操作方法(而不是用于绑定视图中数据的模型对象)?。我有一个视图模型对象,它有一个“事件类型”属性,然后有几个其他属性作为事件参数。对于来自视图的每个post或get请求,我希望创建此视图模型对象的实例并传递事件类型(事件类型指示用户作为枚举执行的操作,并设置所需的属性)。 对象由模型绑定器创建,但不会填充值。但是如果我传递匿名对象,那么我可以提取值,但是我需要为匿名对象中的每个属性声明一个参数,这是我想要避免的

示例代码:

@Ajax.ActionLink("link1","ActionMethod1", new EventData {EventType="event1",Arg1=@arg1})

@Ajax.ActionLink("link2","ActionMethod1", new EventData {EventType="event2",Arg2=@arg2})
行动方法:

[HttpPost]
public void HandleEvent(EventData eventData)
{
     if (eventData != null)
     {
         //perform action
     }
}

如果我正确地阅读了您的问题,您正在尝试通过HTTP GET/POST从浏览器向控制器提交强类型对象,并将其反序列化为所需的对象

这是绝对可能的。在浏览器中,只需序列化为与服务器端类型匹配的JSON对象


签出表单插件,它将为您执行此操作

您是否尝试过将强类型对象包装到泛型对象中

@Ajax.ActionLink("link1","ActionMethod1", new{eventData = new EventData {EventType="event1",Arg1=@arg1}})

我不确定这是否能达到预期效果,但我认为值得一试。

谢谢。如果不使用jQuery,这是不可能的吗。如果愿意,可以手动创建JSON对象。var myObject={id:10等…}或使用Json2.js和stringify,然后使用XMLHttpRequest提交。也一样,谢谢。这听起来很合乎逻辑,我没有考虑。但不幸的是,这对我不起作用。该对象为null,且未填充值。似乎只有基元类型可以作为操作链接的参数传递