用于登录的Episerver块

问题描述 投票:1回答:1

我是episerver cms的新手,我需要在我的主页右上角插入“登录块”,前端​​用户应该能够登录到该应用程序。所以我创建了“LoginBlock”,“LoginBlockController”和一个类“LoginFormPostbackData”。然后我在我的页面上插入了块。请在下面找到代码

 [ContentType(DisplayName = "LoginBlock", GUID = "42103d00-abbe-44e8-bfc2-c07a543cac86", Description = "")]
public class LoginBlock : BlockData
{

    [CultureSpecific]
    [Display(
             Name = "Heading",
             Description = "Add a heading.",
             GroupName = SystemTabNames.Content,
             Order = 1)]
    public virtual String Heading { get; set; } 

    [Display(
      Name = "LoginForm", Description = "Login Form",
      GroupName = SystemTabNames.Content,
      Order = 2)]
    public virtual LoginFormPostbackData LoginPostbackData { get; set; } = new LoginFormPostbackData();
}

public class LoginBlockController : BlockController<LoginBlock>
{
    public override ActionResult Index(LoginBlock currentBlock)
    {
        return PartialView(currentBlock);
    }
}
 public class LoginFormPostbackData
{
    public string Username { get; set; }
    public string Password { get; set; }
    public bool RememberMe { get; set; }
    public string ReturnUrl { get; set; }
}

请查看街区的局部视图。

    <div>       
    <h2>@Html.PropertyFor(x => x.Heading)</h2>

    @Html.LabelFor(m => m.LoginPostbackData.Username, new { @class = "sr-only" })
    @Html.TextBoxFor(m => m.LoginPostbackData.Username, new { @class = "form-control", autofocus = "autofocus" })

    @Html.LabelFor(m => m.LoginPostbackData.Password, new { @class = "sr-only" })
    @Html.PasswordFor(m => m.LoginPostbackData.Password, new { @class = "form-control" })
</div>

当我尝试运行此应用程序时,我收到以下错误

类型'EpiserverSite1.Models.ViewModels.LoginFormPostbackData'无法映射到PropertyDefinitionType描述:在执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:EPiServer.Core.TypeMismatchException:类型'EpiserverSite1.Models.ViewModels.LoginFormPostbackData'无法映射到PropertyDefinitionType

任何人都可以帮我解决这个问题吗?

c# asp.net-mvc html5 episerver
1个回答
1
投票

LoginFormPostbackData不是Episerver的房地产类型。这就是为什么它抱怨,它实质上是说LoginFormPostbackData无法映射到Episerver属性类型。

但是,您不需要表单数据的属性。但是,您可以使用LoginFormPostbackData作为部分视图的视图模型,并可能作为登录控制器的参数类型,以便更容易从表单接收数据。

© www.soinside.com 2019 - 2024. All rights reserved.