操作不会加载视图

时间:2014-11-21 16:56:05

标签: jquery asp.net-mvc

有!

这是一个使用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中调用此Action:

$(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);
});

嗯,事实是,从未加载预期的视图,虽然参数登录没问题,但对象userApp也没问题。

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

我错过了什么?我该怎么做才能正确打开视图?

感谢您的时间。

Paulo Ricardo Ferreira

2 个答案:

答案 0 :(得分:0)

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

$(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);

答案 1 :(得分:0)

最后我开始工作了。它使用respctive数据打开视图。

我的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