无法在Asp.net中通过控制器调用新页面

时间:2016-04-30 18:06:12

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

我想通过jQuery点击Index.cshtml按钮来调用新页面:

$("#btnSearch").click(function(){
        var idser = $("#Name").val();

        $.ajax({    
           type: "POST",
           url: "/User/getAll",
           id : idser,
           success: function() {
               alert("success");
           }
       });
    }); 
});

它调用我的控制器操作:UserController/getAll

[System.Web.Services.WebMethod]
public ActionResult getAll(string id,string name)
{
    return View("AllUser"); 
}

但仍然在Index.cshtml未转到AllUser.cshtml页面?我不知道为什么......请帮忙。 更新: 我的jquery函数在控制器中调用我的动作,动作正常但不会返回到AllUser.cshtml页面。

4 个答案:

答案 0 :(得分:0)

更新以回应评论中的澄清:

success回调中,

location.href="/user/getall";

这将导致浏览器在ajax帖子完成后导航到该URL。

一个按钮,用于将输入中的值发布到另一个页面 - 这是一个表单。

<form action="/User/getAll">
    <input type="submit" value="Click me">
</form>

我不知道你的id来自哪里,但你可以在表单中放入一个隐藏的输入和一个脚本来填充它(除非它是用户输入 - 然后你可以将输入放在表单中。 )

<form action="/User/getAll">
    <input type="submit" value="Click me">
    <input type="hidden" name="id" id="hiddenId"/>
</form>

<script>
    $("#hiddenId").val($("#Name").val());
</script>

或者,如果您想确保表单的action网址符合您的路线:

<form action='@Url.Action("getAll", "User")'>

(假设控制器被称为“用户”。)

答案 1 :(得分:0)

请查看文档here。我会尝试在Ajax设置中使用tag-helper,如下所示:

$("#btnSearch").click(function(){
        var idser = $("#Name").val();

        $.ajax({    
           type: "POST",
           url: '@Url.Action("User", "getAll", new { id = "ID", name = "searchName" })',
           id : idser,
           success: function() {
               alert("success");
           }
       });
    }); 
});

答案 2 :(得分:0)

首先,我不知道在重定向其他页面时使用ajax的目的是什么? 但是如果你仍然想使用Ajax,你可以通过两种方式实现这一目标: 1)您可以在成功区块中指定window.location

2)按照以下方式使用您的代码:

$("#btnSearch").click(function(){
        var idser = $("#Name").val();

        $.ajax({    
           type: "GET",
           url: "/User/getAll",
           id : idser,
           success: function() {
               alert("success");
               return true;
           }
       });
    }); 
});

您可以通过在脚本中添加return true来尝试。

希望对你有帮助

答案 3 :(得分:0)

我们走了:

window.location.href =&#34; yourUrl&#34;可以帮到你。

 $("#btnSearch").click(function(){
            var idser = $("#Name").val();

            $.ajax({    
               type: "POST",
               url: "/User/getAll",
               id : idser,
               success: function() {
                   alert("success");
                  window.location.href ="../yourUrl";  //This is working!
               }
           });
        }); 
    });

您可以在控制器中重定向,如:

[System.Web.Services.WebMethod]
public ActionResult getAll(string id,string name)
{
    return RedirectToAction("NameOfAction"); //Here is going Name of Action       wich returns View AllUser.cshtml

}

希望它有所帮助;)