2013-03-29 24 views
0

我正在使用asp.net mvc4。我有一个action方法,它是一个get方法,因为它返回一个从JavaScript/Jquery调用的mvc视图。将json对象传递给获取请求的控制器动作

JavaScript向控制器操作发出请求。我有一个我想传递给mvc动作的json对象。但作为一个获取请求,因为我需要从中返回一个视图,所以这很困难。

是否有可能传递映射到控制器操作签名上的对象的json对象?我正在寻找图书馆,可能有所帮助,如http://benalman.com/projects/jquery-bbq-plugin/

任何提示或想法?

+0

你不能传递值作为URL参数吗?但是,您必须确保JSON字符串使用JS函数encodeURIComponent进行编码。另外,URI的最大长度可能会阻止您使用此方法。 请注意,不应将GET方法用于可能产生副作用的操作,如创建或修改资源。 – plalx

+1

它为什么需要成为一个get? (关于这个尖叫的所有内容) –

+0

所以,如果我想从基于传入的值的操作中检索mvc视图并在标记中呈现视图的内容。是否是POST的最佳方式?与GET相比,性能如何? – amateur

回答

1

你不需要任何外部API来做到这一点。所有你需要做的就是创建一个与JSON对象具有相同属性和名称的c#对象。 例如创建jQuery的一个对象作为

public class MyObject{ 
    public string MyProperty1{get; set;} 
    public string Property2{get; set;} 
} 

和创建对象是正确的我假设和使用jQuery语法像
如下

$.get('@Url.Action("MyAction","MyController")', 
    {myObject: jqueryObject}, 
    function(resp){$("#myDiv").innerHTML(resp);}); 

而且在行动的情况下,使用函数声明一样

public ActionResult MyAction(MyObject myObject) 
{ 
    // your code here 
    return PartialView("_MyPartialView", myModelForPartialView); 
} 

顺便说一句,这种方式适用于Get和Post。

+0

您可能需要将[fromBody]作为属性添加到方法参数中。 public ActionResult MyAction([FromBody] MyObject myObject) –

1

你可以使用类似servicestack http://www.servicestack.net/这样的东西来处理所有事情,并且做得很好,作为替代方案,有MVC API选项,但是servicestack在这方面更好。

我确定,如果你看看这个项目,你会从中得到很棒的想法,或者学会将你的数据驱动代码从你的UI项目中分离出来。

相关问题