2014-03-28 1 views
0

내 목표는 전체 레지스터 모양을 모달에 추가하는 것입니다. 확장 된 모델 과수원 CMS가있는 애드혹 형태

는이를 달성하기 위해, 내 레이아웃에 내 콘텐츠를 추가

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

내 레지스터보기 부트 스트랩 모달 좋은 보인다.

모든 것이 효과가있는 것으로 보입니다.

BUT

난 프로필 등록에 추가 필드를 표시하기 위해 contrib.Profile 및 itWorks.ExtendedRegistration를 사용한다.

이 필드는 표시되지 않습니다.

표시기 레지스터에 일부 중단 점을 디버그하여 컨트롤러에 넣습니다. 그러나 아무도 일어나지 않습니다. 결론적으로 Ad Hoc 셰이프는 cshtml을 직접 주입한다는 결론입니다.

내 질문은 :

어떻게 추가 필드를 표시하는 데 필요한 형상 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(), "15");

동일한 모양 (동일한 cshtml)이 시작되지만 추가 된 입력란은 표시되지 않습니다.

나는 이유는, 단순히 모양으로 사용자 프로필을 주입 컨트롤러에 통과하지 못한 것을 알고

:

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

Extra fields doesn't get data (SOLVED) 마지막으로 내 cshtml에서 같은 라인을 사용하는 방법을 발견 이 라인 :

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

이제 모든 :

0

이 도움이 될 수 있습니다 : 내가 가지고있는 Orchard.User를 확장 내 자신의 모듈에

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에서 :

+0

을하고있다 안녕하세요, 그것은 '아무튼 도와 줘. 제 경우에는 올바른 모듈을 register.cshtml로로드합니다. Model.UserProfile을로드합니다. 하지만 내 문제는 그것이 비어 있다는 것입니다. 나는 Ad hoc template (http://weblogs.asp.net/bleroy/archive/2011/06/30/creating-shapes-on-the)을위한 컨트롤러와 같은 모양으로 주입을 다시 할 수있는 방법을 찾는다. -fly.aspx) :'shape.UserProfile = _contentManager.BuildEditor (user); ' – Jerome2606

+0

다른 문제가 있습니다.모든 코드를 게시하고 연결하는 방법을 사용하지 않는 것이 가장 좋습니다. 이것도 확인하십시오 : http://extendedregistration.codeplex.com/discussions/260237 – ErMasca

+0

프로필 부분에 새 필드를 만들었습니까? 어떻게 그걸합니까? 코드? User ContentType에 추가 했습니까 (ProfilePart)? – ErMasca