Sitecore MVC Form Post

时间:2016-11-16 07:20:40

标签: sitecore sitecore-mvc

我有一个ControllerRedering和一个显示新闻内容的视图,下面是一个部分视图,可以让用户添加新评论。

    @using (Html.BeginRouteForm(Sitecore.Mvc.Configuration.MvcSettings.SitecoreRouteName, FormMethod.Post, new { @class = "form-inline", role = "form" }))
    {
        @Html.Sitecore().FormHandler("NewsContent","Index")

some controlls here...

        <div class="form-group">
            <input type="submit" value="Add" class="btn btn-default"/>
        </div>

    }

这是控制器内容:

   public class NewsContentController : Controller
    {
            //shows news content
        public ActionResult Index()
        {
            var model = Factory.Context.GetCurrentItem<INews>();
            return View(model);
        }

           //saves comment
        [HttpPost]
        public ActionResult Index(Comment comment)
        {
            //get current item
            var parent = Factory.Context.GetCurrentItem<INews>();
            IComment _comment = new Comment
            {
                Description = comment.Description,
                FullName = comment.FullName,
                Name = DateTime.Now.ToString("yy-MM-ddThh-mm-ss")
            };

            var db = Factory.GetSitecoreService(Factory.SiteCoreDataBase.master);
            using (new SecurityDisabler())
            {
                db.Create(parent, _comment);
            }

            ViewBag.Message = "Thanks for comment";

           IView pageView = Sitecore.Mvc.Presentation.PageContext.Current.PageView;
            if (pageView == null)
                return new HttpNotFoundResult();

            return (ActionResult) View(pageView);
        }
    }

点击“添加”按钮后,显示

  

渲染已经以递归方式嵌入其自身。嵌入跟踪:内容 - 控制器:新闻内容。行动:索引[内容 - 控制器:新闻内容。行动:指数 - {04234ec6-d54e-4eb7-81df-402493d29c4f}] - &gt;内容 - 控制器:新闻内容。行动:索引[内容 - 控制器:新闻内容。行动:索引 - {04234ec6-d54e-4eb7-81df-402493d29c4f}]

1 个答案:

答案 0 :(得分:0)

如果布局详细信息或静态绑定导致子布局或渲染绑定到自身,Sitecore会抛出此错误,从而导致无限递归。

我可以在你的代码中看到 - 你的动作最终会自我递归。

IView pageView = Sitecore.Mvc.Presentation.PageContext.Current.PageView;
            if (pageView == null)
                return new HttpNotFoundResult();

            return (ActionResult) View(pageView);

你可以做的只是return View("index");