重定向到控制器中的操作不起作用

时间:2014-07-20 11:29:48

标签: c# asp.net-mvc asp.net-mvc-4

我有这段代码:

 public ActionResult Create()
        {
            if (dbcontext.SettingConfs.First().offlineState == "true")
            {

                TempData["Error"] = "ژمان ثبت نام به پایان رسیده است  ";
                RedirectToAction("login", "Account");
                return View();

            }
            else if (User.IsInRole("Admin"))
            {
                return View("Create");

            }
            else if (dbcontext.SettingConfs.First().offlineState == "true")
            {
                return View("Create");
            }

            else
            {
                return View();
            }

        }

在第一个if statement我检查了offlineState如果它是真的我应该将控制器重定向到account控制器。但是它不起作用并且mvc返回我的视图(即创建视图)但我需要重定向到login控制器中的account操作。问题出在哪里。?

我的login view

@model EducationMVC.Models.LoginModel

@{
    ViewBag.Title = "ورود به سامانه";
    Layout = "~/Views/Shared/_LayoutLogin.cshtml";
}


@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl })) {
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

    <div id="wrapper-right">
         <div id="text-product"></div>
     </div>
    <div id="wrapper-left">
        <div id="wrapper-login">
            <div class="rows-input-login">

                <span style="font:normal 13px BYekan;color:#252525">
                    نام کاربری :
                </span>
                @Html.TextBoxFor(m => m.UserName, new {@class = "username"})
                <div style="float:left;font:normal 11px tahoma;color:#ea0000;padding-top:8px;padding-left:5px;margin-top:-85px">
                    @Html.ValidationMessageFor(m => m.UserName) 
                </div>
            </div>
            <div class="rows-input-login" style="margin-top:10px;">

                <span style="font:normal 13px BYekan;color:#252525">
                    رمز عبور : 
                </span>
                @Html.PasswordFor(m => m.Password)
                <div style="float:left;font:normal 11px tahoma;color:#ea0000;padding-top:8px;padding-left:5px;margin-top:-85px">
                    @Html.ValidationMessageFor(m => m.Password)
                </div>
            </div>

            <div class="rows-input-login" style="margin-top: 20px">
                <div id="row-right">
                    <div class="rows-input-login" style="height:30px;">
                        @if (TempData.ContainsKey("Message"))
                        {
                            <div class="wrapper-error" style="background: transparent; color: green">
                                @TempData["Message"]
                            </div>
                        }
                    </div>
                </div>
                <div id="row-left">
                    <input type="submit" value="ورود" class="button-caution"/>
                </div>
            </div>
            <div class="rows-input-login" style="margin-top:10px;">

                @if (TempData.ContainsKey("Error"))
                {
                    <div class="wrapper-error" style="background: transparent;font-size:11px; color: #ea0000">
                        @TempData["Error"]
                    </div>
                }
            </div>

        </div>
    </div>
}

最好的问候

4 个答案:

答案 0 :(得分:2)

将您的if条件更改为此,您不会再次RedirectToAction返回View,因为显示的是View的原因,而不是重定向。对于重定向,您需要写{{1} }}:

return RedirectToAction("Action","Controller")

更多了解Visit this link

答案 1 :(得分:1)

 RedirectToAction("login", "Account");
                return View();

将其更改为:

 return RedirectToAction("login", "Account");

答案 2 :(得分:1)

只写:

return RedirectToAction("login", "Account");

答案 3 :(得分:1)

试试这个:

return RedirectToAction("login", "Account");

我希望这会有所帮助