2016-05-10 2 views
-4

MVC У меня есть этот код ...не location.href работает на жереха

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

Я пытаюсь перенаправить на главную страницу ... после чеку успеха ... но это не Работа. Я получил:

Ошибка сервера в приложении «/».

Этот вид страницы не подан.

Описание: Тип запрашиваемой страницы не подается, потому что это явно запрещено. Расширение «.cshtml» может быть неверным. Ознакомьтесь с приведенным ниже URL и убедитесь, что оно написано правильно.

Любые идеи?

Это мой 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"); 
      } 
     } 
    } 

ответ

0

Я думаю, что у вас непонимание шаблона MVC.

«я хочу, чтобы перенаправить к нему после предупредительного сообщения об успешном завершении. Я не иметь его в любом контроллере. Я просто хочу, чтобы сделать простой редирект.»

Но это не стандарт. Как правило, вы можете создать контроллер даже для самых простых запросов, даже если он просто смотрел, как

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

, а затем направляется к действию контроллера

window.location.href = "/User/Home"; 
1

Web-сервер не будет обслуживать * .cshtml по умолчанию из-за соображений безопасности.

Я думаю, вы хотите перенаправить на домашнюю страницу. Если да, то это должно быть что-то вроде этого -

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

Или

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

Или

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

Home.cshtml сво вид которым я создал. .. Я хочу перенаправить его после сообщения об успешном предупреждении. У меня его нет в любом контроллере. я просто хочу сделать простой переадресации –

+0

Все еще не работает .. –

+0

Is ** Home Действие метод ** внутри ** UserController **? Если нет, то где он находится? Вы должны иметь возможность просматривать URL-адрес внутри браузера, прежде чем пытаться заставить свой код работать. Например, 'http: // localhost: xxx/user/home' – Win

1

Вы пытаетесь перенаправить на вид cshtml. Вам нужно перенаправить на действие в вашем контроллере - предположительно/User/Home

+0

Как я могу перенаправить в контроллер? –

+0

@BoularbahHamza Изменив href на/User/Home, как я упоминал, или используя помощник Url.Action. –

Смежные вопросы