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 6148 posts 24097 karma points MVP 8x 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 = "[email protected]" })
                @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

Please Sign in or register to post replies

Write your reply to:

Draft