Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Kanykei 2 posts 72 karma points
    Oct 10, 2016 @ 10:17
    Kanykei
    0

    Changing RegisterModel of Umbraco to the custom model. UmbracoIdentity

    I am completely new in Umbraco and Identity.Net. I am using UmbracoIdentity now. And I have to register members using my custom model not RegisterModel of Umbraco.Web.Models. So my question is how register member using my model or using standart RegisterViewModel of UmbracoIdentity??

  • Alex Skrypnyk 6182 posts 24284 karma points MVP 9x admin c-trib
    Oct 10, 2016 @ 13:31
    Alex Skrypnyk
    1

    Hi Kanykei

    Welcome to our forum.

    Try to use Umbraco SurfaceController with custom model as parameter.

    https://our.umbraco.org/documentation/reference/routing/surface-controllers

    Try to write your own controller, also can you share your code with us?

    Thanks,

    Alex

  • Kanykei 2 posts 72 karma points
    Nov 03, 2016 @ 05:04
    Kanykei
    0

    Thanks for answer. I still cant use my custom model. I created custom controller, model, view. But i stucked with problem discribed here https://our.umbraco.org/forum/using-umbraco-and-getting-started/75998-update-to-742-all-custom-hijacked-controllers-stopped-working. And I did it exactly as solution suggested there, but it doesnt work. The error is Cannot bind source type Umbraco.Web.Models.RenderModel`1[[Umbraco.Web.PublishedContentModels.Registrafiya

    Here is my custom model:

    public class RegistrationViewModel : RenderModel
        {
            public RegistrationViewModel(IPublishedContent content) : base(content)
            {
            }
    
            [DisplayName("Имя пользователя")]
            [Required(ErrorMessage = "Пожалуйста введите ваше имя", AllowEmptyStrings = false)]
            public string Name { get; set; }
    
            [DisplayName("Пароль")]
            [Required(ErrorMessage = "Пожалуйста введите пароль", AllowEmptyStrings = false)]
            [DataType(System.ComponentModel.DataAnnotations.DataType.Password)]
            [StringLength(255, MinimumLength = 6, ErrorMessage = "Пароль должен состоять как минимум из 6 символов")]
            public string Password { get; set; }
    
            [DisplayName("Повторите пароль")]
            [Required(ErrorMessage = "Пожалуйста введите пароль", AllowEmptyStrings = false)]
            [Compare("Password", ErrorMessage = "Пароли не совпадают! Попробуйте еще раз")]
            [DataType(System.ComponentModel.DataAnnotations.DataType.Password)]
            public string ConfirmedPassword { get; set; }
    
            [DisplayName("Почтовый адрес")]
            [Required(ErrorMessage = "Пожалуйста введите ваш почтовый адрес(email)", AllowEmptyStrings = false)]
            [RegularExpression(@"^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$", ErrorMessage = "Введите правильный почтовый адрес")]
            public string Email { get; set; }
    
        }
    

    Here is my custom controller inherited from SurfaceController:

    public class MemberRegisterController : Umbraco.Web.Mvc.SurfaceController
        {
            public ActionResult RegisterMember([Bind(Prefix = "registrationViewModel")]RenderModel renderModel)
            {
                RegistrationViewModel model = new RegistrationViewModel(renderModel.Content);
                if (!ModelState.IsValid)
                    return CurrentUmbracoPage();
    
                var memberService = Services.MemberService;
                if (memberService.GetByEmail(model.Email) != null)
                {
                    ModelState.AddModelError("", "Member already exists");
                    return CurrentUmbracoPage();
                }
                var member = memberService.CreateMemberWithIdentity(model.Email, model.Email, model.Name, "Member");
    
                memberService.Save(member);
    
                memberService.SavePassword(member, model.Password);
    
                Members.Login(model.Email, model.Password);
    
             //   return Redirect("/");
                return RegisterMember(model);
            }
        }
    

    Here is partial view, where i create my form:

    @inherits Umbraco.Web.Mvc.UmbracoViewPage<RegistrationViewModel>
    @using System.Web.Mvc.Html
    @using ClientDependency.Core.Mvc
    @using Umbraco.Web
    @using Umbraco.Web.Controllers
    @using MinSoc.Models
    @using MinSoc.Controllers
    
    
     @using (Html.BeginUmbracoForm<MemberRegisterController>("RegisterMember"))
     {
    
            <fieldset action id = "job-finder">
                <div class="content-form">
                @Html.ValidationSummary("registrationViewModel", true)
    
                <div class="form-item form-item-text">  
                @Html.LabelFor(m => Model.Name)
                @Html.TextBoxFor(m => Model.Name, new { placeholder = "Например: Исаев" })
                @Html.ValidationMessageFor(m => Model.Name)
                <br />
                </div>
    
                <div class="form-item form-item-text">  
                @Html.LabelFor(m => Model.Password)
                @Html.PasswordFor(m => Model.Password, new { placeholder = "******" })
                @Html.ValidationMessageFor(m => Model.Password)
                <br />
                </div>
    
                <div class="form-item form-item-text">  
                @Html.LabelFor(m => Model.ConfirmedPassword)
                @Html.PasswordFor(m => Model.ConfirmedPassword, new { placeholder = "******" })
                @Html.ValidationMessageFor(m => Model.ConfirmedPassword)
                <br />
                </div>
    
                <div class="form-item form-item-text">  
                @Html.LabelFor(m => Model.Email)
                @Html.TextBoxFor(m => Model.Email,new { placeholder = "isaev@gmail.com" })
                @Html.ValidationMessageFor(m => Model.Email)
                <br />
                </div>
    
                <div class="form-actions">
                <input type="submit" value="Зарегистрироваться">
                </div>
    
                </div> <!--content-form-->
            </fieldset>
    
    }
    

    Here is my view, where i render my partial view:

    @inherits Umbraco.Web.Mvc.UmbracoTemplatePage<ContentModels.Registrafiya>
    @using ContentModels = Umbraco.Web.PublishedContentModels;
        @{
            Layout = "Master.cshtml";
        }
        <div class="one-sidebar">
            <div id="wrapper">
                <div id="breadcrumbs">
                    <div class="inner">
                        <a href="\"><i class="fa fa-home" aria-hidden="true"></i> Главная</a> / Регистрация на сайте
                    </div>
                </div><!--.breadcrumbs-->
                <div id="container" class="inner">
                    <div id="content">
                        <h1>@Umbraco.Field("registPageTitle")</h1>
                          @Html.Partial("~/Views/Partials/RegisterMember.cshtml", Model);
                        <div class="login-menu">
                            <a href="/авторизация-на-сайте">@Umbraco.Field("registSignIn")</a> | <a href="#">@Umbraco.Field("registSetPassword")</a>
                        </div>
                    </div><!--#content-->
                    <aside id="sidebar">
                        <h3><span>@Umbraco.Field("registPageHeader")</span></h3>
                        <p>@Umbraco.Field("registInfo")</p>
                    </aside>
                </div><!--#container-->
            </div>
        </div>
    

    Please help)) any answer will be appreciated. Thanks

  • This forum is in read-only mode while we transition to the new forum.

    You can continue this topic on the new forum by tapping the "Continue discussion" link below.

Please Sign in or register to post replies