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
    Sep 27, 2017 @ 10:15
    mikkel
    0

    I'm making a login page, but I get an error every time I see the page

    I'm making a page where a regular user must log in so they do not see the default umbraco login page. but I keep getting this error.

    Cannot bind source content type Umbraco.Web.PublishedContentModels.LogInd to model content type Umbraco.Web.PublishedContentModels.Projekter.
    
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
    
    Exception Details: Umbraco.Web.Mvc.ModelBindingException: Cannot bind source content type Umbraco.Web.PublishedContentModels.LogInd to model content type Umbraco.Web.PublishedContentModels.Projekter.
    
    Source Error: 
    
    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
    
    Stack Trace: 
    
    
    [ModelBindingException: Cannot bind source content type Umbraco.Web.PublishedContentModels.LogInd to model content type Umbraco.Web.PublishedContentModels.Projekter.]
       Umbraco.Web.Mvc.RenderModelBinder.ThrowModelBindingException(Boolean sourceContent, Boolean modelContent, Type sourceType, Type modelType) +755
       Umbraco.Web.Mvc.RenderModelBinder.BindModel(Object source, Type modelType, CultureInfo culture) +413
       Umbraco.Web.Mvc.UmbracoViewPage`1.SetViewData(ViewDataDictionary viewData) +180
       System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +99
       System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +107
       Umbraco.Core.Profiling.ProfilingView.Render(ViewContext viewContext, TextWriter writer) +113
       System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +290
       System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13
       System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +56
       System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +420
       System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +420
       System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +420
       System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +52
       System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +173
       System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +100
       System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
       System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
       System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27
       System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +13
       System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29
       System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
       System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +36
       System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +12
       System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +22
       System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
       System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +26
       System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
       System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +21
       System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29
       System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
       System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +28
       System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
       System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9987157
       System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
    

    My Model to the login page...

    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.Web;
    
    namespace MalerDion.Models
    {
        public class LoginModel
        {
            [Display(Name = "Brugernavn/Email")]
            public string Login { get; set; }
            [Display(Name = "Adgangskode")]
            public string Password { get; set; }
            [Display(Name = "Husk mig")]
            public bool RememberMe { get; set; }
        }
    }
    

    My Controllers

    using MalerDion.Models;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using System.Web.Security;
    
    namespace MalerDion.Controllers
    {
        public class MembershipController : Umbraco.Web.Mvc.SurfaceController
        {
            [HttpGet]
            [ActionName("MemberLogin")]
            public ActionResult Index()
            {
                return PartialView();
            }
    
    
            //Log ud metoden
            [HttpGet]
            public ActionResult Logout()
            {
                Session.Clear();
                FormsAuthentication.SignOut();
                return Redirect("/");
            }
    
    
            [HttpPost]
            [ActionName("MemberLogin")]
            public ActionResult Validate(LoginModel model)
            {
                if (Membership.ValidateUser(model.Login, model.Password))
                {
                    FormsAuthentication.SetAuthCookie(model.Login, model.RememberMe);
                    return RedirectToCurrentUmbracoPage();
                }
                else
                {
                    TempData["Status"] = "Invalid Log-in Credentials";
                    return RedirectToCurrentUmbracoPage();
                }
    
    
            }
        }
    }
    

    My PartialView

    @using MalerDion.Controllers
    @model MalerDion.Models.LoginModel
    
    @if (User.Identity.IsAuthenticated)
    {
        <p>Velkommen, @User.Identity.Name</p>
    
        <p>@Html.ActionLink("Log out", "logout", "Membership")</p>
    }
    else
    {
        using (Html.BeginUmbracoForm<MembershipController>("MemberLogin"))
        {
            @Html.EditorFor(x => Model)
            <input type="submit" />
        }
        <p>@TempData["Status"]</p>
    }
    

    And here i Render the partialView

    @inherits Umbraco.Web.Mvc.UmbracoTemplatePage<ContentModels.Projekter>
    @using ContentModels = Umbraco.Web.PublishedContentModels;
    @{
        Layout = "Master.cshtml";
    }
    @Html.Partial("LoginForm")
    

    What am i doing wrong??

  • Mpumi Masondo 1 post 71 karma points
    Oct 06, 2017 @ 11:14
    Mpumi Masondo
    0

    Hi @mikkel.

    From what I can observe you need to pass the model that you are binding from to your partial view like such:

    @Html.Partial("LoginForm", new  MalerDion.Models.LoginModel()) 
    
Please Sign in or register to post replies

Write your reply to:

Draft