首页 > 解决方案 > 登录后如何使用自己的 url 返回另一个视图,而不是在同一登录页面中加载?MVC

问题描述

我想重定向到欢迎页面,它应该根据用户类型显示/隐藏 html 元素。我已经写return View("Welcome", adminvar);了,但它返回登录 URL 内的欢迎页面。

刷新后,它会显示重新提交表单的弹出警告。我想重定向到欢迎页面。我试过这个

return RedirectToAction("Welcome" , adminvar);

但它不起作用。

[HttpPost]
public ActionResult Login(tbl_Admin adminObj)
{ 
        studentDBEntities db = new studentDBEntities();
        var adminvar = db.tbl_Admin.Where(x => x.Email == adminObj.Email && x.Password == adminObj.Password).Select(s=> new tbl_AdminVM {
              AdminId = s.AdminId,
               Email = s.Email,
               Name = s.Name,
               Password = s.Password,
               Type = s.Type
        }).FirstOrDefault();
        
        if (adminvar != null)
        {
            
            /* return RedirectToAction("Welcome" , adminvar);*/
            return View("Welcome", adminvar);
        }
        else 
        {
            return View();
        }
}

public ActionResult Welcome()
{
    ViewBag.Message = "Welcome Admin - Admin Account Page";
    return View();
}

看法:

@if (Model.Type)
{
    <center><p>@Html.ActionLink("Admin Management", "ListAdmin")</p></center>
}

标签: c#asp.net-mvcredirect

解决方案


在这里,您将 Welcome View 返回到登录方法,该方法将在登录页面上呈现欢迎视图内容,并且不会重定向到欢迎页面。

您可以做的是,成功登录后,重定向到 Welcome Action。

return RedirectToAction("Welcome", new { userType = adminvar.Type });

并修改欢迎操作如下

public ActionResult Welcome(string userType)

在 Welcome 操作中获取 usertype 的值并使用 Viewbag 将其发送到 Welcome 视图。

ViewBag.userType = userType;

使用欢迎页面上 ViewBag.userType 的值来显示/隐藏 html 元素。


推荐阅读