我是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
任何人都可以帮我解决这个问题吗?
LoginFormPostbackData
不是Episerver的房地产类型。这就是为什么它抱怨,它实质上是说LoginFormPostbackData
无法映射到Episerver属性类型。
但是,您不需要表单数据的属性。但是,您可以使用LoginFormPostbackData
作为部分视图的视图模型,并可能作为登录控制器的参数类型,以便更容易从表单接收数据。