我尝试从控制器渲染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异常而失败。
感谢。
答案 0 :(得分:0)
似乎是Razor引擎中的一个错误。
我的工作方式。
AuthorizationInfo.cshtml
@{ Html.RenderAction("LoginPartial"); }
AuthorizationController.cs
public ActionResult Login()
{
return View();
}
public ActionResult LoginPartial()
{
ViewBag.Partial = true;
return PartialView("Login");
}
现在,表格后期不会生成带有递归应用模板的溢出。