2013-08-05 76 views
2

調用一個ActionResult這是我的ActionResult如何從jQuery的

{   

    UsersModel um = new UsersModel(); 
    um.Users = userRepository.GetAllUsers(); 
    um.UserCustomers = userRepository.GetAllUserCustomerConnections(); 
    um.UserTypes = enums.GetAllDescriptions(CodeType.UserType); 
    um.Customers = userRepository.GetAllCustomers(); 
    um = SearchUsers(Request,um); 
    return View(um); 
} 

它採用了功能SearchUsers:

private UsersModel SearchUsers(HttpRequestBase request, UsersModel curModel) 
    { 
     try 
     { 
      // request parameters 
      string userName = request.Params["user-name"]; 
      string firstName = request.Params["first-name"]; 
      string lastName = request.Params["last-name"]; 
      int status,type,businessId; 

      if (!string.IsNullOrWhiteSpace(userName)) 
       curModel.Users = curModel.Users.Where(u => u.Username.Contains(userName)); 
      if (!string.IsNullOrWhiteSpace(firstName)) 
       curModel.Users = curModel.Users.Where(u => u.FirstName.Contains(firstName)); 
      if (!string.IsNullOrWhiteSpace(lastName)) 
       curModel.Users = curModel.Users.Where(u => u.LastName.Contains(lastName)); 
      if (int.TryParse(request.Params["status-search"], out status)) 
       curModel.Users = curModel.Users.Where(u => u.Status == status); 
      if (int.TryParse(request.Params["userTypes-search"], out type)) 
       curModel.Users = curModel.Users.Where(u => u.UserType == type); 
      if (int.TryParse(request.Params["busi-name"], out businessId)) 
       curModel.Users = curModel.Users.Where(u => u.LastCustomerId == businessId); 

      return curModel; 
     } 
     catch 
     { 
      return curModel; 
     } 

    } 

現在我有我的看法與ID按鈕「搜索用戶」 和我的js文件的命令:

$('#search-users').click(function() { 

    }); 

我怎麼可以張貼HttpRequestBase到控制器?

+0

你是詢問如何調用使用AJAX的行動?你是否想要調用與上面相同的動作? –

+0

是的exacly,與我的觀點中的參數 –

+0

你叫什麼動作,它的參數是什麼(如果有的話)? –

回答

10

我不能完全回答這個問題,因爲我不知道每件事的結構。

對您的操作的調用是否使用AJAX,您在請求過程中仍然會有相同的對象。這意味着您將仍然有一個Request對象,其類型爲HttpRequestBase。這是個好消息。這意味着處理AJAX請求相對簡單。

首先,決定如何處理您的操作,以便它適用於AJAX。您可以使用Request.IsAjaxRequest()分支您的邏輯。

例如:

{   
    UsersModel um = new UsersModel(); 
    um.Users = userRepository.GetAllUsers(); 
    um.UserCustomers = userRepository.GetAllUserCustomerConnections(); 
    um.UserTypes = enums.GetAllDescriptions(CodeType.UserType); 
    um.Customers = userRepository.GetAllCustomers(); 
    um = SearchUsers(Request,um); 
    if (Request.IsAjaxRequest()) 
    { 
     return PartialView(um); 
    } 
    return View(um); 
} 

在你看來你希望你到

  1. 按鈕發送使用AJAX
  2. 做與響應的東西的請求。要做到這一點

的一種方式可能是您的按鈕發送請求的動作和動作返回一個PartialView(如上面的例子)。這意味着您將需要用返回的HTML替換頁面的內容。

您的按鈕看起來像個不錯的開始。

您需要使用AJAX腳本來解釋要請求的URL,要發送的數據以及響應的內容(至少)。示例(非功能性的,這只是一個指南):

$('#search-users').click(function() { 
    $.ajax({ 
     url: "@Url.Action("Index", "MyController")", 
     data: {user-name: $("#user-name").val(), 
       first-name: $("#first-name").val(), 
       last-name: $("#last-name").val()}, 
     success: function(data) { 
       $("#content").html(data); 
      }; 
     } 
    ); 
}); 
0
$.ajax({ 
      type: "GET", 
      url: @Url.Action('actionname', 'controllername'), 
      data: ({ param1: $('ctl').val(),...}), 
      success: function (result) { 
//do something 
      } 
     }); 
+0

此外,您應該返回一個局部視圖,而不是您的控制器操作中的視圖。 – Nirman