发布表单返回视图不完整布局

时间:2014-07-07 22:29:48

标签: asp.net-mvc sitecore sitecore-mvc sitecore7.1

运行Sitecore 7.1更新2,我正在创建一个登录表单,这是设置:

“LoginController”具有方法“Index”和“Login”以及一个视图“Index”

创建控制器渲染,控制器字段具有“命名空间和dll”,操作字段具有“索引”。我正在使用MVC区域,这就是为什么我必须指定命名空间和dll。

内容项的布局配置了“索引”控制器渲染

“索引”视图具有以下代码(起初我使用了正常的MVC开始表单,但是没有用):

@using (Html.BeginRouteForm(MvcSettings.SitecoreRouteName, FormMethod.Post))
{
    @Html.Sitecore().FormHandler("Login", "Login")
    //form fields...
}

当我提交包含不正确凭据的表单时,我想再次显示表单(视图)并显示错误,我得到视图但从布局中删除。

在我搜索解决此问题之前,我不知道Sitecore FormHandler方法,也没有看到它的文档。 Sitecore MVC上的任何资源?与Sitecore 7.1相关的内容,因为我发现的大多数示例都是Sitecore 6和过时的。

由于

2 个答案:

答案 0 :(得分:2)

我认为您的问题是由于以下代码行而直接发布到MVC操作:

@Html.Sitecore().FormHandler("Login", "Login")

由于sitecore跳过默认呈现过程,并直接发布到控制器Action。

要返回完整版面,请将其替换为:

@Html.Sitecore().FormHandler()

sitecore中的“控制器呈现”项应具有“控制器”=“登录”和“操作”=“登录”,哪个sitecore用于决定将表单发布到哪个控制器/操作。

不幸的是,Sitecore还没有提供关于如何处理MVC表单的更多细节,但是,有一个MVC版本的Sitecore启动,您可以看一下here,那里有一些很好的MVC示例,它可能有所帮助。

答案 1 :(得分:0)

使用Sitecore,您无法在没有任何其他逻辑/代码的情况下使用默认MVC。这是因为在ASP.NET MVC中,每个请求只有一个控制器/操作。在Sitecore MVC中,您可以在一个页面请求中拥有多个具有多个操作的控制器。

在Sitecore MVC中有几种处理表单帖子的方法。 This here一个很好的资源。我更喜欢有一个非常类似于ASP.NET MVC的解决方案,我认为这也是你的想法:使用描述in my blog的方法,您可以使用普通@Html.BeginForm()并使用自定义属性来指定哪个应该调用控制器动作。如果登录失败,您可以显示错误消息,并在登录正常时执行任何操作。这也适用于一个页面请求中的多个表单。