Umbraco 7.6.2:无法绑定源类型<;我的模型>;到模型类型Umbraco.Core.Models.i发布内容

Umbraco 7.6.2:无法绑定源类型<;我的模型>;到模型类型Umbraco.Core.Models.i发布内容,umbraco,umbraco7,Umbraco,Umbraco7,我正在尝试使用Umbraco 7.6.2创建自定义登录表单。我基于Umbraco.Web.Mvc.SurfaceController创建了表单的局部视图、模型和曲面控制器 在所有这些之后,我得到了错误: 无法将源类型“我的模型名称”绑定到模型类型Umbraco.Core.Models.IPublishedContent 控制器: public class UserSurfaceController : Umbraco.Web.Mvc.SurfaceController { //

我正在尝试使用Umbraco 7.6.2创建自定义登录表单。我基于Umbraco.Web.Mvc.SurfaceController创建了表单的局部视图、模型和曲面控制器

在所有这些之后,我得到了错误:

无法将源类型“我的模型名称”绑定到模型类型Umbraco.Core.Models.IPublishedContent

控制器:

public class UserSurfaceController : Umbraco.Web.Mvc.SurfaceController
{
    //
    // GET: /User/
    public ActionResult Index()
    {
        return View();
    }

    [HttpGet]
    public ActionResult Login()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Login(Models.UserModel user)
    {
        if (ModelState.IsValid)
        {
            if (user.IsValid(user.UserName, user.Password))
            {
                FormsAuthentication.SetAuthCookie(user.UserName, user.RememberMe);
                return RedirectToAction("Index", "Home");
            }
            else
            {
                ModelState.AddModelError("", "Login data is incorrect!");
            }
        }
        return View(user);
    }
    public ActionResult Logout()
    {
        FormsAuthentication.SignOut();
        return RedirectToAction("Index", "Home");
    }
}
型号:

public class UserModel 
{
    [Required]
    [Display(Name = "User name")]
    public string UserName { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [Display(Name = "Remember on this computer")]
    public bool RememberMe { get; set; }

    /// <summary>
    /// Checks if user with given password exists in the database
    /// </summary>
    /// <param name="_username">User name</param>
    /// <param name="_password">User password</param>
    /// <returns>True if user exist and password is correct</returns>
    public bool IsValid(string _username, string _password)
    {
        if (_username == "username" && _password == "password")
        {
            return true;
        }
        else
        {
            return false;
        }
    }

}
公共类用户模型
{
[必需]
[显示(Name=“User Name”)]
公共字符串用户名{get;set;}
[必需]
[数据类型(数据类型.密码)]
[显示(Name=“密码”)]
公共字符串密码{get;set;}
[显示(Name=“记住在这台计算机上”)]
公共布尔记忆{get;set;}
/// 
///检查数据库中是否存在具有给定密码的用户
/// 
///用户名
///用户密码
///如果用户存在且密码正确,则为True
public bool有效(字符串\u用户名,字符串\u密码)
{
如果(_username==“username”&&&&u password==“password”)
{
返回true;
}
其他的
{
返回false;
}
}
}
视图:

@继承Umbraco.Web.Mvc.UmbracoViewPage
@{
Layout=“Master.cshtml”;
}
@Html.Partial(“User”,新名称空间.UserModel());
局部视图:

@model namespace.UserModel

<div role="content">
<div class="container">
    <div class="row">
        <div class="col">
            @using (Html.BeginUmbracoForm<namespace.Controllers.UserSurfaceController>("Login", "UserSurface"))
            {
                <div>
                    <fieldset>
                        <legend>Login</legend>
                        <div class="editor-label">
                            @Html.LabelFor(u => u.UserName)
                        </div>
                        <div class="editor-field">
                            @Html.TextBoxFor(u => u.UserName)
                            @Html.ValidationMessageFor(u => u.UserName)
                        </div>
                        <div class="editor-label">
                            @Html.LabelFor(u => u.Password)
                        </div>
                        <div class="editor-field">
                            @Html.PasswordFor(u => u.Password)
                            @Html.ValidationMessageFor(u => u.Password)
                        </div>
                        <div class="editor-label">
                            @Html.CheckBoxFor(u => u.RememberMe)
                            @Html.LabelFor(u => u.RememberMe)
                        </div>
                        <input type="submit" value="Log In" />
                    </fieldset>
                </div>
            }
            </div>
    </div>
</div>
</div>
@model namespace.UserModel
@使用(Html.BeginUmbracoForm(“Login”、“UserSurface”))
{
登录
@LabelFor(u=>u.UserName)
@Html.TextBoxFor(u=>u.UserName)
@Html.ValidationMessageFor(u=>u.UserName)
@LabelFor(u=>u.Password)
@Html.PasswordFor(u=>u.Password)
@Html.ValidationMessageFor(u=>u.Password)
@Html.CheckBoxFor(u=>u.RememberMe)
@LabelFor(u=>u.RememberMe)
}

我可能做错了什么?考虑到这是Umbraco 7.6.2。

在您看来,您期望的是
i发布的内容

@inherits Umbraco.Web.Mvc.UmbracoViewPage<IPublishedContent> 
@继承Umbraco.Web.Mvc.UmbracoViewPage

您没有提供该模型的代码。仔细检查此模型是否继承了
RenderModel
。您的
UserModel
对于partial很好。

我没有视图的模型,它仅依赖于Umbraco。这可能就是我在这里错过的。。。今天晚些时候我将尝试一下并更新帖子。通过不向您的视图提供模型,Umbraco将使用其当前请求上下文来确定请求的当前页面,并隐式地向视图提供该模型。在您的情况下,“returnview(user);”行可能会有问题,因为您为视图提供的是一个不兼容的模型(UserModel),而不是预期的ippublishedcontent(因为您的视图声明它继承了它)。
@inherits Umbraco.Web.Mvc.UmbracoViewPage<IPublishedContent>