2016-05-10 14 views
-4

ich diesen Code haben ...location.href nicht arbeiten an asp mvc

$("#Login").click(function() 
{ 
    var dataObject = { UserName: $("#UserName").val(), Password: $("#Password").val() }; 
    $.ajax({ 
     url: '@Url.Action("Login","User")', 
     type: "POST", 
     data: dataObject, 
     datatype: "json", 
     success: function (result) { 
      if (result.toString() == "success") { 
       alert(result); 
       window.location.href = "~/Views/User/Home.cshtml"; 

      } 
      else { 
       alert(result); 

      } 
     }, 
     error : function(result) 
     { 
      alert("ERRORR") 
     } 
    }); 
}) 

Ich versuche, auf die Homepage ... nach dem Erfolg Alarm zu umleiten ... aber es funktioniert nicht Arbeit. Ich habe:

Server Fehler in '/' Anwendung.

Dieser Seitentyp wird nicht bedient.

Beschreibung: Die Art der Seite, die Sie angefordert haben, wird nicht bedient, da sie ausdrücklich verboten wurde. Die Erweiterung '.cshtml' ist möglicherweise falsch. Bitte überprüfen Sie die URL unten und stellen Sie sicher, dass sie richtig geschrieben ist.

Irgendwelche Ideen?

Das ist mein Usercontroller:

public class UserController : Controller 
    { 
     UserBusinessLogic UserBL = new UserBusinessLogic(); 
     // 
     // GET: /User/ 
     public ActionResult Login() 
     { 
      return View(); 
     } 
     [HttpPost] 
     public ActionResult Login(User User) 
     { 
      string message = ""; 
      if(ModelState.IsValid) 
      { 
       if(UserBL.CheckUserLogin(User) > 0) 
       { 
        message="success"; 

       } 
       else 
       { 
        message="Username or password not correct"; 
       } 
      } 
      else 
      { 
       message = "All Field Required"; 
      } 
      if (Request.IsAjaxRequest()) 
      { 
       return Json(message,JsonRequestBehavior.AllowGet); 
      } 
      else 
      { 
       return RedirectToAction("Index","Home"); 
      } 
     } 
    } 

Antwort

0

Ich denke, Sie haben ein Missverständnis der MVC-Muster.

„Ich mag es nach dem Erfolg Warnmeldung umleiten. I nicht hat es in jedem Controller. Ich möchte nur eine einfache Umleitung machen.“

Aber das ist nicht der Standard. Normalerweise würden Sie einen Controller selbst für die einfachsten Anfragen erstellen, auch wenn es sah genauso aus wie

public class UserController : Controller 
{ 
    public ActionResult Home() 
    { 
     return View(); 
    } 
} 

und dann auf die

Aktion des Controllers gerichtet
window.location.href = "/User/Home"; 
1

Web-Server nicht bedienen * .cshtml standardmäßig aus Sicherheitsgründen Grund.

Ich denke, dass Sie auf die Startseite umleiten möchten. Wenn ja, sollte es so etwas wie dieses -

window.location.href = '@Url.Content("~")'; 

Oder

window.location.href = '@Url.Content("~/User/Home")'; 

Oder

window.location.href = '@Url.Action("Home","User")'; 
+0

Home.cshtml seine eine Ansicht, welche ich erstellt. .. Ich möchte nach der Erfolgsmeldung weiterleiten. Ich habe es in keinem Controller. Ich möchte nur eine einfache Umleitung machen –

+0

Immer noch nicht funktioniert .. –

+0

Ist ** Home Action-Methode ** in ** UserController **? Wenn nicht, wo befindet es sich? Sie sollten in der Lage sein, die URL im Browser zu durchsuchen, bevor Sie versuchen, Ihren Code zu verwenden. Zum Beispiel: "http: // localhost: xxx/user/home" – Win

1

Sie versuchen, auf eine cshtml Ansicht zu umleiten. Sie müssen zu der Aktion in Ihrem Controller umleiten - vermutlich/User/Home

+0

Wie kann ich in der Steuerung umleiten? –

+0

@BoularbahHamza Indem ich die href nach/User/Home ändere, wie ich bereits erwähnt habe oder den Url.Action Helfer benutze. –