这是我的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,在请求期间,您仍将拥有相同的对象。这意味着您仍将具有类型为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);
}
在您看来,您希望按钮
使用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);
};
}
);
});