Jquery 行动不';不要加载视图

Jquery 行动不';不要加载视图,jquery,asp.net-mvc,Jquery,Asp.net Mvc,那里 这是一个带有jQuery的MVC应用程序 在控制器中执行此操作时,我希望创建一个对象,然后打开一个视图来编辑该对象: public ActionResult GetUserFromAD(string logon) { var userAD = new UsersAD().ListUsersFromAD(logon).FirstOrDefault(); var userApp = new User(); userApp .Log

那里

这是一个带有jQuery的MVC应用程序

在控制器中执行此操作时,我希望创建一个对象,然后打开一个视图来编辑该对象:

    public ActionResult GetUserFromAD(string logon)
    {
        var userAD = new UsersAD().ListUsersFromAD(logon).FirstOrDefault();
        var userApp = new User();
        userApp .Logon = userAD .Login;
        userApp .Nome = userAD .DisplayName;
        userApp .Divisao = userAD .Orgao;
        userApp .Email = userAD .Email;
        return View(userApp );
    }
我通过单击另一个视图中的元素,在此jQuery中调用此操作:

$(document).on("click", ".GetUserFromAD", function () {        
    var options = {};
    options.url = "/Administracao/GetUserFromAD";
    options.type = "GET";
    options.data = { logon: $(this).attr("data-id") };
    options.dataType = "json";
    options.contentType = "application/json";
    //options.success = function (data) {

    //};
    options.error = function () { alert("Error on getting user data from AD!") };
    $.ajax(options);
});
事实上,预期的视图从未加载,尽管参数logon正常,但对象userApp也正常

我得到的只是来自jQuery函数的这个警报(获取时出错…)

我错过了什么?如何正确打开视图

谢谢你抽出时间


保罗·里卡多·费雷拉(Paulo Ricardo Ferreira)

以下是我建议的解决方案,希望这对您有用:

$(document).on("click", ".GetUserFromAD", function () {        
var options = {};
options.url = "/Administracao/GetUserFromAD";
options.type = "GET";
options.data = { logon: $(this).attr("data-id") };
options.dataType = "json";
options.contentType = "text/html";
options.success = function (data) {
   $('....container where you want your view to show up .....').html(data);
};
options.error = function () { alert("Error on getting user data from AD!") };
$.ajax(options);
});
使现代化 另一个选项是执行ajax调用,但不返回任何内容。改为重定向到另一个操作,该操作将加载您要使用的视图

return RedirectToAction(Action name, model);

我终于让它工作了。它打开包含响应数据的视图

我的jQuery函数的代码如下:

    $(document).on("click", ".GetUserFromAD", function () { 
    var logon = $(this).attr("data-id");
    var targetUrl = "/Administracao/CreateUserOnApp/?logon=" + logon.toString();
    window.location.href = targetUrl;
});
现行守则如下:

        public ActionResult CreateUserOnApp(string logon)
    {
        var userAD = new UsuariosAD().ListUsersFromAD(logon).FirstOrDefault();
        var userApp = new User();
        userApp .Logon = userAD .Login;
        userApp .Nome = userAD .DisplayName;
        userApp .Divisao = userAD .Orgao;
        userApp .Email = userAD .Email;
        return View(userApp );
    }
现在它的工作方式,我预期的

感谢所有帮助我找到实现这一目标的方法的人


保罗·里卡多·费雷拉(Paulo Ricardo Ferreira)

您是否尝试在控制器中的操作上设置断点,并查看该操作是否被命中?如果是,您的服务器端代码中是否有错误?同时取消对成功方法的注释,并放置一个警报(数据)-该警报应以您需要嵌入的HTML进行响应。@Gjohn,谢谢您的时间。我在操作中添加了一个断点,并验证了操作是否被命中,以及对象userAD是否被正确检索(服务器端代码没有错误)。取消了success方法的注释,但仍然得到相同的响应。视图本身是否发生错误?你能发布你的观点吗?还可以查看fiddler,查看您对动作的调用到底返回了什么。还要将contentType更改为“text/html”,注意ajax方法是GET类型。我只想让操作呈现视图。我按照您的建议将contentType更改为“text/html”,没有任何区别。我尝试了您的最新建议。在我最初的操作中,现在我有了这个
返回重定向到操作(“CreateUserOnApp”,usuarioApp)和CreateUserOnApp操作只有以下内容:
返回视图(用户)
。即便如此,它也没有起作用。很抱歉,CreateUserOnApp操作是否位于同一控制器中?执行重定向时发生了什么?这个动作会被击中吗?如果没有,请检查路由规则。顺便问一下,“CreateUserOnApp”是您要加载的视图吗?是否有名为“CreateUserOnApp”的视图。如果没有,视图的名称是什么?以上所有问题的答案都是肯定的!动作在同一控制器中;动作被击中;CreateUserOnApp是我想要加载的视图,有一个名为CreateUserOnApp的视图。谢谢你的时间。我从javascript代码中得到的是一个解析器错误