我的目标是在模态中添加完整的寄存器形状。
为实现这一目标,我在布局中添加了我的内容:
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);
所以问题是如何在布局视图中进一步做这些线?
答案 0 :(得分:0)
答案 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>
}
现在一切正常:)