在ASP.Net MVC4中重定向

时间:2013-08-19 09:13:03

标签: ajax asp.net-mvc jquery asp.net-mvc-4

我正在使用ASP.Net MVC4 Razor 。我遇到了重定向的问题。我想在用户登录时将用户重定向到Home控制器(如果登录有效)。 但我的问题是它总是回到登录页面,即使重定向meythod也被解雇了。

这是我的代码..

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'
    });
}

Home Controller ..

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

点击登录按钮后,它来到 LoginAccess in Login controller ,然后进入 Home controller Index 方法,但是不查看“用户视图”。 但是当我用打字网址&gt;&gt;(主机__ /登录/登录访问“&gt; http:// __ 主机 __ /登录/登录访问它正常工作。 请帮我解决这个问题。 谢谢.. :))

4 个答案:

答案 0 :(得分:1)

您可能在此处滥用Ajax功能

你应该使用 @ Html.ActionLink(“登录”,“登录访问”,“登录”)

Ajax最初用于从服务器端获取某些内容,而不是影响当前浏览页面。

答案 1 :(得分:1)

试试这个

return redirect("/Home/Index")

答案 2 :(得分:0)

当您进行Ajax次呼叫时,您无法强制从控制器重定向。您可以通过两种方式解决此问题:

  1. 使用常规get。替换ajax调用。
  2. 从动作中返回一个json并使用javascript的重定向

答案 3 :(得分:0)

你可以试试这个

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