3

这是我的 ActionResult

{          

    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 为“search-users”的按钮和我在 js 文件中的命令:

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

    });

如何将 HttpRequestBase 发布到控制器?

4

2 回答 2

12

我不能完全回答这个问题,因为我不知道一切是如何构成的。

无论对您的操作的调用是否使用 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. 对响应做一些事情。

执行此操作的一种方法可能是让您的按钮向操作发送请求并让操作返回 a 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);
            };
        }
    );
});
于 2013-08-05T05:36:06.547 回答
0
$.ajax({
            type: "GET",
            url: @Url.Action('actionname', 'controllername'),
            data: ({ param1: $('ctl').val(),...}),
            success: function (result) {
//do something
            }
        });
于 2013-08-05T05:34:03.380 回答