1

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

这是我的代码..

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 >>( host__/Login/LoginAccess">http://__ host __/Login/LoginAccess )它工作正常。 请帮我解决这个问题。谢谢.. :)

4

4 回答 4

1

当你Ajax打电话时,你不能强制从控制器重定向。您可以通过 2 种方式解决此问题:

  1. 用常规 get 替换 ajax 调用。
  2. 从操作中返回一个 json 并使用来自 javascript 的重定向
于 2013-08-19T10:20:47.213 回答
1

您可能会在此处误用 Ajax 功能

您应该改用 @Html.ActionLink("Login", "LoginAccess", "Login" )

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

于 2013-08-19T09:20:56.870 回答
1

试试这个

return redirect("/Home/Index")
于 2015-11-16T15:04:17.537 回答
0

你可以试试这个

var result = new ControllerName().YourAction();
于 2013-08-19T10:29:13.740 回答