0
我想用Umbraco創建一個自定義登錄窗體7.6.2我爲窗體,模型和窗體創建了部分視圖基於Umbraco.Web.Mvc.SurfaceController的曲面控制器。Umbraco 7.6.2:無法將源類型<my model>綁定到模型類型Umbraco.Core.Models.IPublishedContent
無法綁定源型「我的模型的名稱」 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;
}
}
}
檢視:
@inherits Umbraco.Web.Mvc.UmbracoViewPage<IPublishedContent>
@{
Layout = "Master.cshtml";
}
@Html.Partial("User", new namespace.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>
我在這裏做錯了什麼?考慮到這是Umbraco 7.6.2。
我沒有視圖的模型,它僅依賴於Umbraco。這可能是我在這裏想念的東西......我今天晚些時候會試一試並更新帖子。 –
通過不向視圖提供模型,Umbraco將使用其當前請求上下文來確定當前請求的頁面,並將隱式地將該模型提供給View。在你的情況下,行「返回查看(用戶);」可能是有問題的,因爲你提供了一個不兼容的模型(UserModel)而不是預期的IPublishedContent(因爲你的視圖聲明它繼承了它)。 –