Copied to clipboard

Flag this post as spam?

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


  • mikkel 143 posts 365 karma points
    Aug 25, 2019 @ 08:52
    mikkel
    0

    update method/Controller doesent work!

    Hi every one. I dont now if my member controller is made right. I want it to show text in textboxes so my members can update them by them self. But something is going wrong i cant in my razor code acces my proberties in my model. i am not sure i am doing it right ?? it is my first time ever making a update method in razor and umbraco

    Here is my controller

    using Medlemmer.Models;
    using System.Reflection.Metadata;
    using System.Web.Mvc;
    using Umbraco.Web.Mvc;
    
    namespace Medlemmer.Controllers
    {
        public class updateMemberController : SurfaceController
        {
            // GET: Register
            public ActionResult OpdaterMedlem(Models.UpdateMember model)
            {
    
                // Check if the user is logged in
                if (!User.Identity.IsAuthenticated)
                {
                    // Send the user to the login page
                    Redirect("/login");
                }
    
                // The model is not valid yet
                if (!ModelState.IsValid)
                {
                    // Display the current Umbraco page (do not redirect)
                    return CurrentUmbracoPage();
                }
    
                // Create new instance of "MemberService"
                var memberService = Services.MemberService;
    
                // Get the details of the user currently logged in
                var profileModel = Members.GetCurrentMemberProfileModel();
    
                // Get the custom properties for the member
                var member = memberService.GetByEmail(profileModel.Email);
    
                // Check if the email address is in the database
                if (member == null)
                {
                    ModelState.AddModelError("", "Er du sikker på det er den rigtige du opdatere!");
                    return CurrentUmbracoPage();
                }
    
                // Update the member properties
                member.Properties["bio"].Value = model.omMig;
                member.Properties["email"].Value = model.Email;
                member.Properties["name"].Value = model.Name;
                member.Properties["avatar"].Value = model.billede;
    
    
                // Save in Umbraco
                memberService.Save(member);
                return Redirect("/");
    
    
            }
        }
    
    
    }
    

    Here is my razor view

    @inherits Umbraco.Web.Mvc.UmbracoTemplatePage<ContentModels.Profil>
    @using ContentModels = Umbraco.Web.PublishedContentModels;
    @using Medlemmer.Controllers
    @using Umbraco.Web.Models
    @{
        Layout = "master.cshtml";
        var medlem = Members.GetCurrentMember();
        var test = Umbraco.MembershipHelper.GetCurrentMemberProfileModel();
    
        var virker = ApplicationContext.Current.Services.MemberService.GetMembersByMemberType("newsMember");
        var bruger = Umbraco.MembershipHelper.GetCurrentMember();
    }
    
    
    @using (Html.BeginUmbracoForm<updateMemberController>("OpdaterMedlem", FormMethod.Get))
            {
        <div class="panel">
            <div class="col-md-5">
                @Html.TextBoxFor(m => m.Email)<!-- Here it goes wrong to i cant use .Email because it dont exixst -->>
            </div>
        </div>
    }
    

    Here is my model

    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.Web;
    
    namespace Medlemmer.Models
    {
    
        public class UpdateMember
        {
            [Required]
            public string Name { get; set; }
    
            [Required]
            [EmailAddress]
            public string Email { get; set; }
            [Required]
            public string Password { get; set; }
    
            [Required]
            public string omMig { get; set; }
    
            [Required]
            public HttpPostedFileBase billede { get; set; }
        }
    }
    
  • Shaishav Karnani from digitallymedia.com 354 posts 1638 karma points
    Aug 25, 2019 @ 13:50
    Shaishav Karnani from digitallymedia.com
    0

    Controller:- You have to pass UpdateMember class object in updateMemberController. So, that UpdateMember object can be accessed in the View.

    Front-end:- Form need to be moved to the partial as your current model is ContentModel. So, m.Email will not exists.

    Example Below -

    View:-

    @inherits Umbraco.Web.Mvc.UmbracoTemplatePage<ContentModels.Profil>
    @using ContentModels = Umbraco.Web.PublishedContentModels;
    @using Medlemmer.Controllers
    @using Umbraco.Web.Models
    @{
        Layout = "master.cshtml";
        var medlem = Members.GetCurrentMember();
        var test = Umbraco.MembershipHelper.GetCurrentMemberProfileModel();
    
        var virker = ApplicationContext.Current.Services.MemberService.GetMembersByMemberType("newsMember");
        var bruger = Umbraco.MembershipHelper.GetCurrentMember();
    }
    
    @Html.Partial("MemberUpdate",Model.Content.UpdateMember)
    

    Partial MemberUpdate.csthml

    As UpdateMember is the modal for this Partial View so you will get m.Email.

    @inherits Umbraco.Web.Mvc.UmbracoViewPage<UpdateMember>
    
    @using (Html.BeginUmbracoForm<updateMemberController>("OpdaterMedlem", FormMethod.Get))
            {
        <div class="panel">
            <div class="col-md-5">
                @Html.TextBoxFor(m => m.Email)<!-- Here it goes wrong to i cant use .Email because it dont exixst -->>
            </div>
        </div>
    }
    

    Please try and let me know if this works for you or have any further queries.

    Regards,

    Shaishav

  • mikkel 143 posts 365 karma points
    Aug 27, 2019 @ 15:36
    mikkel
    0

    i cant get it to work. i can show the members information, bu i cant show it in af textbox. i dont now how to do that. i have try many things as getting acces to the controllers and models by using

    @using Medlemmer.Controllers
    @using Umbraco.Web.Models
    @using Medlemmer.Models
    

    and then i try to get the

    @Html.TextBoxFor(e => e.Email)
    

    To be the the textbox that have to have the text inside it

    I want the information in the image to be in textbox so that it is ready to be edited by the memberenter image description here

  • Shaishav Karnani from digitallymedia.com 354 posts 1638 karma points
    Aug 27, 2019 @ 22:46
    Shaishav Karnani from digitallymedia.com
    0

    Hi Mikkel,

    Above solution should work. Do you want to share your solution and we can try for you?

    As it’s difficult to troubleshoot why it’s not working for you.

    Regards,

    Shaishav

  • mikkel 143 posts 365 karma points
    Aug 28, 2019 @ 18:21
    mikkel
    0

    Hi Shaishav Karnani I practice CRUD. so it is only exercise. I want to share it with you, so I can learn something too. I'll share it with you when I get home from work tomorrow

  • mikkel 143 posts 365 karma points
    Aug 29, 2019 @ 14:58
    mikkel
    0

    Hi Shaishav

    how can i share it with you ?? :D

Please Sign in or register to post replies

Write your reply to:

Draft