这是我的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为“搜索用户”的按钮
和我在js文件中的命令:

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

    });


如何将HttpRequestBase发布到控制器?

最佳答案

我无法完全回答这个问题,因为我不知道所有事情的结构。

无论您对操作的调用是否正在使用AJAX,在请求期间,您仍将拥有相同的对象。这意味着您仍将具有类型为RequestHttpRequestBase对象。这是个好消息;这意味着处理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);
}


在您看来,您希望按钮


使用AJAX发送请求
对响应做些事情。


一种方法是让您的按钮向操作发送请求,并让操作返回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);
            };
        }
    );
});

10-04 16:08
查看更多