2013-08-19 4 views
1

Я использую ASP.Net MVC4 Razor. У меня проблема с redirection. Я хочу перенаправить пользователя на главный контроллер при входе в систему (если логин действителен). Но моя проблема заключается в том, что он всегда возвращается к странице входа в систему, даже если перенаправить meythod также уволен.Перенаправление в ASP.Net MVC4

Вот мой код ..

public class LoginController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult LoginAccess() 
    { 
     return RedirectToAction("Index", "Home"); 
    } 

} 

Войти страница ..

<div class="body_wraper"> 
<div id="cloud" style="background:url('@Url.Content("~\\Content\\cloud.png")');"> 
    <div id="login_form"> 
     <div class="Three-Dee">Login here..</div> 
     <table> 
      <tbody> 
       <tr> 
        <td>@Html.Label("Username")</td> 
        <td></td> 
        <td>@Html.TextBox("txtUsername")</td> 
       </tr> 
       <tr> 
        <td>@Html.Label("Password")</td> 
        <td></td> 
        <td>@Html.Password("txtPassword")</td> 
       </tr> 
       <tr> 
        <td></td> 
        <td></td> 
        <td style="text-align:right;"><button class="k-button" id="login" onclick="Login()">Login</button></td> 
       </tr> 
      </tbody> 
     </table> 
    </div> 
</div> 

<script type="text/javascript"> 

function Login() { 
    $.ajax({ 
     url: '@Url.Content("~/Login/LoginAccess")', 
     type: 'POST' 
    }); 
} 

Главная контроллер ..

public ActionResult Index() 
    { 
     Session["UserName"] = "Administrator"; 
     string menu = this.GetMenu(); 
     ViewBag.ManueItems = menu; 
     return View("User"); 
    } 

После нажмите на кнопку входа он приходит к LoginAccess в Вход контроллера, а затем приходит к Home Index контроллер метод, но не рассматривает «мнение пользователя». Но когда я проверить с набрав URL >> (хозяина __/Войти/LoginAccess "> Http: // __ хоста __/Войти/LoginAccess) Сво работает правильно Пожалуйста, помогите мне SLOVE этой проблемы. . Спасибо .. :)

ответ

1

Вы можете злоупотребить функцию Ajax здесь

Вы должны использовать @ Html.ActionLink ("Войти", "LoginAccess", "Логин") вместо

Ajax изначально используется для получения чего-либо с серверной стороны, кроме того, что затрагивает текущую страницу просмотра.

+0

Пропущенный что. Хорошо подмечено. Да, вы не можете отправить такую ​​страницу через Ajax. Ajax просто отправляет обратно «копию» и удаляет возвращенную страницу. –

+0

Спасибо за ответ :). Я пробовал это, но это не сработало. $ ("# login"). Click (function() { @ (Html.ActionLink ("Login", "LoginAccess", "Login")) }); – tishantha

+0

@ user2549153: Вы неправильно используете HTML.ActionLink ... Это генерирует HTML-привязку на странице, а не javascript.Пожалуйста, просмотрите источник созданной вами страницы, чтобы увидеть, что было создано. –

0

Когда вы делаете Ajax звонки, вы не можете принудительно перенаправлять с контроллера. Вы можете исправить это двумя способами:

  1. Заменить ajax-звонок с регулярным получением.
  2. Вернуть JSON от действий и использовать перенаправление с JavaScript
0

Вы можете попробовать это

var result = new ControllerName().YourAction(); 
1

попробовать это вместо

return redirect("/Home/Index")