具有扩展模型Orchard CMS的Ad hoc形状

时间:2014-03-28 08:41:02

标签: twitter-bootstrap razor orchardcms shapes orchardcms-1.7

我的目标是在模态中添加完整的寄存器形状。

为实现这一目标,我在布局中添加了我的内容:

WorkContext.Layout.ModalFirst.Add(New.Register(), "15");

我的注册视图在bootstrap模式下看起来不错。

一切似乎都有效。

BUT

我使用contrib.Profile和itWorks.ExtendedRegistration以在配置文件和注册中显示添加字段。

这些字段不会显示。

我调试并将一些断点放入显示寄存器的控制器中。但没人开火。 所以我的结论是Ad Hoc形状直接注入了cshtml。

我的问题是:

如何在Shape中添加显示添加字段所需的Model.UserProfile?

@using (Html.BeginFormAntiForgeryPost()) { 
<fieldset>
    <legend>@T("Account Information")</legend>
    <div>
        <label for="username">@T("Username:")</label>
        @Html.TextBox("username") 
        @Html.ValidationMessage("username") 
    </div>
    <div>
        <label for="email">@T("Email:")</label>
        @Html.TextBox("email") 
        @Html.ValidationMessage("email") 
    </div>
    <div>
        <label for="password">@T("Password:")</label>
        @Html.Password("password") 
        @Html.ValidationMessage("password") 
    </div>
    <div>
        <label for="confirmPassword">@T("Confirm password:")</label>
        @Html.Password("confirmPassword") 
        @Html.ValidationMessage("confirmPassword") 
    </div>
        @if (Model.UserProfile != null)
        {
            <br />
            <fieldset>
                <legend>@WorkContext.CurrentSite.SiteName</legend>
            @Display(Model.UserProfile)
                </fieldset>
        }
    <div>
        <button class="primaryAction" type="submit">@T("Register")</button>
    </div>
</fieldset>
} 

编辑:

我的问题来自于我动态加载形状的事实。

如果我输入url直接调用形状:http://DomainName.com/Users/Account/Register 显示我添加的字段。

如果我使用Shape Ad Hoc:WorkContext.Layout.ModalFirst.Add(New.Register(),&#34; 15&#34;);

它启动相同的形状(相同的cshtml),但我的添加字段不会显示。

我知道为什么,它只是没有进入控制器,将UserProfile注入到形状中:

var shape = _orchardServices.New.Register();

        var user = _orchardServices.ContentManager.New("User");
        if (user != null)
        {
            shape.UserProfile = _contentManager.BuildEditor(user);
        }

        return new ShapeResult(this, shape);

所以问题是如何在布局视图中进一步做这些线?

2 个答案:

答案 0 :(得分:0)

这可能会有所帮助:Extra fields doesn't get data (SOLVED)

答案 1 :(得分:0)

最后我找到了在cshtml中使用相同行的方法:

var orchardServices = WorkContext.Resolve<IOrchardServices>();
var contentManager = WorkContext.Resolve<IContentManager>();

var shape = orchardServices.New.Register();

var user = orchardServices.ContentManager.New("User");
if (user != null)
{
    shape.UserProfile = contentManager.BuildEditor(user);
}

WorkContext.Layout.ModalFirst.Add(shape, "15");

在我自己的模块中的Register.cshtml中扩展了Orchard.User我有以下几行:

@if (Model.UserProfile != null)
{
    <div class="col-md-2"></div>
    @Display(Model.UserProfile)
    <div class="col-md-2"></div>
}

现在一切正常:)