我们可以很容易地如下调用使用Javascript/Jquery的控制器方法:
假设以下是被称为返回一些类对象的数组控制器方法。让类是“A”
public JsonResult SubMenu_Click(string param1, string param2)
{
A[] arr = null;
try
{
Processing...
Get Result and fill arr.
}
catch { }
return Json(arr , JsonRequestBehavior.AllowGet);
}
以下是复杂的类型(类)
public class A
{
public string property1 {get ; set ;}
public string property2 {get ; set ;}
}
现在轮到以上由JQUERY控制器的方法调用。以下是调用控制器方法的Jquery函数。
function callControllerMethod(value1 , value2) {
var strMethodUrl = '@Url.Action("SubMenu_Click", "Home")?param1=value1 ¶m2=value2'
$.getJSON(strMethodUrl, receieveResponse);
}
function receieveResponse(response) {
if (response != null) {
for (var i = 0; i < response.length; i++) {
alert(response[i].property1);
}
}
}
在上面的jQuery函数“callControllerMethod”我们开发的控制器方法的网址,并把在一个名为“strMehodUrl”变量并调用API的Jquery的方法的getJSON。
receieveResponse是接收控制器方法的响应或返回值的回调函数。
在这里,我们提出使用JSON的,因为我们不能使用C#的类对象
直接进入javascript函数的,因此,我们所转换的结果(ARR)在控制器的方法为JSON对象如下:
Json(arr,JsonRequestBehavior.AllowGet);
并返回该Json对象。
现在在Javascript/JQuery的回调函数中,我们可以利用这个结果的JSON对象并相应地工作以在UI上显示响应数据。
更多detaill click here
所以我实现了这一点: $( '#refreshGrid')负载( '?/客户/ GetAttachments ID =' + clientID的); 我的客户控制器看起来是这样的: 公众的ActionResult GetAttachments(INT ID){ // 一些逻辑... 回报PartialView( “〜/查看/客户/ ClientAttachmentGridView.ascx”,文件); } alert($('#refreshGrid'))给了我一个对象,alert(clientID)给了我期望的东西。控制器没有被击中(否则我会看到一些来自提琴手的Web服务调用)。令人讨厌的是我没有看到任何错误消息。 – RailRhoad 2009-08-26 20:07:57
哦,我收回它。我得到一个500小提琴手: 参数字典中包含一个空条目,用于参数'id'不可为空的类型'System.Int32'方法'System.Web.Mvc.ActionResult GetAttachments(Int32)''CommercialLendingPlatform .Controllers.ClientController”。为了使参数可选,其类型应该是引用类型或Nullable类型。
参数名称:参数 – RailRhoad 2009-08-26 20:10:32
奇妙!我需要做一个Client/GetAttachments/clientID!忘记一秒钟的网址路由。感谢大家! – RailRhoad 2009-08-26 20:13:07