如何从Jquery调用一个ActionResult

时间:2013-08-05 05:07:02

标签: asp.net asp.net-mvc jquery asp.net-mvc-4

这是我的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发布到控制器?

2 个答案:

答案 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. 做出回应。
  3. 执行此操作的一种方法可能是您的按钮向操作发送请求以及操作返回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);
                };
            }
        );
    });
    

答案 1 :(得分:0)

$.ajax({
            type: "GET",
            url: @Url.Action('actionname', 'controllername'),
            data: ({ param1: $('ctl').val(),...}),
            success: function (result) {
//do something
            }
        });