2016-04-30 7 views
-2

ich neue Seite durch Klick auf einem Button von jQuery von Index.cshtml nennen will:kann nicht rufen neue Seite durch den Controller in Asp.net

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

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

Es ruft meine Controller-Aktion: UserController/getAll

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

Aber ist immer noch unter Index.cshtml nicht zu AllUser.cshtml Seite gehen? Ich weiß nicht warum ... bitte hilf mir. UPDATE: meine jquery Funktion ruft meine Aktion im Controller auf, und die Aktion funktioniert ordnungsgemäß, aber es kehrt nicht zur AllUser.cshtml Seite zurück.

+1

Der ganze Zweck von Ajax auf der ** ** gleichen Seite zu bleiben, und Ajax-Aufrufe niemals auf eine andere Seite umleiten. Verwenden Sie keinen Ajax, wenn Sie zu Ihrer 'getAll()' Methode navigieren möchten –

+0

Verwenden Sie return RedirectToAction ("NameAction"); in Controller – praguan

Antwort

0

Aktualisierung als Reaktion auf Klärung in den Kommentaren:

Im success Rückruf,

location.href="/user/getall"; 

, dass der Browser auf diese URL zu navigieren, wird dazu führen, nachdem die Ajax-Post abgeschlossen hat.


Eine Schaltfläche, die einen Wert von einer Eingabe an eine andere Seite sendet - das ist ein Formular.

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

Ich weiß nicht, wo Ihre ID herkommt, aber Sie können einen versteckten Eingang in der Form, und ein Skript, um es zu füllen (es sei denn, es ist ein Benutzereingabe ist - dann können Sie nur die Eingabe wieder gutmachen in Form)

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

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

Oder, wenn Sie sicher sein wollen, dass Ihr Formular action URL entspricht Ihre Route:..

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

(Unter der Annahme, dass der Controller "User" genannt wird)

+0

Ich möchte es von jQuery und vom Controller aufrufen: UserController.cs, Aktion getAll wird an AllUser.cshtml, ich möchte nicht durch ein Formular gehen, können Sie mir helfen. – moviehay0032

0

Bitte überprüfen Sie die Dokumentation here. Ich würde versuchen, einen Tag-Helfer in der Ajax Setup wie folgt ein:

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

Erstens weiß ich nicht, was sich hinter mit Ajax Ihr Ziel ist es, während die andere Seite umleiten? Aber wenn Sie noch Ajax verwenden möchten, können Sie dies auf zwei Arten erreichen: 1) Sie können window.location in Ihrem Erfolgsblock zuweisen.

2) Verwenden Sie den Code durch folgende Art und Weise:

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

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

Sie können es versuchen, durch return true in Ihrem Skript setzen.

hoffen, dass es Ihnen

+0

Ich möchte MVC-Modell verwenden, also verwende ich Ajax, um eine Aktion im Controller aufzurufen, und von diesem Controller wird die nächste Ansicht aufgerufen. – moviehay0032

+0

Es ist eine Demo-Funktion Ich versuche, Parameter-Formular eine Sicht auf den Controller zu übergeben und direkt auf eine andere Ansicht von Controller – moviehay0032

0

Hier hilft gehen wir:

window.location.href = "yourUrl" kann Ihnen helfen.

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

Sie können in-Controller umleiten dies wie:

[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 

} 

Hoffe, es hilft;)

+0

kann ich neue URL nach Funktion in Controller getan? – moviehay0032

+0

@ moviehay0032 Sie sollten dies wie in Controller verwenden: return RedirectToAction ("NameAction"); – praguan

+0

Danke, aber es funktioniert immer noch nicht. – moviehay0032

Verwandte Themen