2014-03-04 67 views

回答

1

LogOn呈现为内容,我不认为您可以通过展示位置更改此设置。为什么要把它渲染到别的地方?

您是否希望将其他内容与登录表单一起显示?您需要为此创建一个小部件。我做了一个小模块,虽然如果我说实话,我没有真正测试过它,我不确定我会信任那么多^ _ ^但是,代码是可用的,应该指向正确的方向。

https://modaccountwidgets.codeplex.com/

或者,如果你感觉勇敢,它是在画廊,准备安装;)

https://gallery.orchardproject.net/List/Modules/Orchard.Module.Contrib.Mod.AccountWidgets

编辑

登录只是一个形状所以你理论上可以覆盖登录网址

yield return new RouteDescriptor 
      { 
       Priority = 1000, 
       Route = new Route("Users/Account/LogOn", 
        new RouteValueDictionary { 
              {"area", Area}, 
              {"controller", "MyController"}, 
              {"action", "LogOn"}, 
        }, 
        new RouteValueDictionary(), 
        new RouteValueDictionary { { "area", Area } }, 
        new MvcRouteHandler()) 
      }; 

然后在这里创建您的登录形状并将其发送到您想要使用IWorkContextAccessor的区域(将其注入到您的新控制器中),例如。

var logon = _orchardServices.New.LogOn().Title(T("Log On").Text); 
contextAccessor.GetContext().Layout.Zones["MobileContent"].Add(logon, 1); 

但是,我可以想象这会变得相当混乱。你可能想重新思考你是如何做到这一点的。虽然有人可能有更好的解决方案:)

+0

我们有2个自定义主题,一个用于桌面版本的网站,另一个用于移动。桌面主题包含内容区域,但我们故意将其排除在移动主题之外,因此它不会输出用于桌面站点的任何窗口小部件。所以MobileContent区域是移动主题的主要内容区域。 –

+0

编辑,虽然我会建议保持内容区域;) – Hazza

+0

但是,如果我保留内容区域,我会在我以前的评论中遇到问题。你知道一种避免它的方法吗?例如,我们可以通过隐藏小部件来解决这个问题,但我们希望避免由于带宽原因而将小部件完全发送到浏览器 –

相关问题