从控制器渲染局部视图或视图

时间:2016-09-15 23:35:05

标签: asp.net-mvc partial-views

我尝试从控制器渲染PartialView或View,具体取决于来自外部的条件。使用StackOverflowException发布数据时,网站失败。

控制器代码:

    public ActionResult Login(bool partial = false)
    {
        if (partial)
        {
            ViewBag.Partial = true;
            return PartialView();
        }
        return View();
    }

    [HttpPost]
    public ActionResult Login(UserViewModel userViewModel)
    {
        if (!ModelState.IsValid)
            return View(userViewModel);
        // some authrorization staff
    }

Login.cshtml:

    @using SK.DDP.ImageGallery.Helpers
    @model SK.DDP.ViewModels.UserViewModel

    @{
        ViewBag.Title = "Login";
        if (ViewBag.Partial != null)
        {
            Layout = string.Empty;
        }
    }

    @*Some form staff*@

AuthorizationInfo.cshtml:

    @{
        Layout = string.Empty;
    }

    @{ Html.RenderAction("Login", "Authorization"); }

模板:

    @*Some dif for form requested by menu*@
    @{ Html.RenderAction("AuthorizationInfo", "Authorization"); }

我有一个网站,当用户点击菜单时会出现登录页面和登录弹出窗口,所以我想重复使用控制器和代码的相同操作,并且应用程序继续因stackoverflow异常而失败。

感谢。

1 个答案:

答案 0 :(得分:0)

似乎是Razor引擎中的一个错误。

我的工作方式。

AuthorizationInfo.cshtml

@{ Html.RenderAction("LoginPartial"); }

AuthorizationController.cs

public ActionResult Login()
{
    return View();
}

public ActionResult LoginPartial()
{
    ViewBag.Partial = true;
    return PartialView("Login");
}

现在,表格后期不会生成带有递归应用模板的溢出。