在Umbraco中使用我的自定义模型时出现以下错误:
Cannot bind source type Umbraco.Web.Models.RenderModel to model type MyParser.Model.MyModel.
包含此模型的代码是我正在“导入”Umbraco站点的旧项目 - 它曾经只是一个vanilla MVC应用程序。
对于我的使用,它不需要与Umbraco或数据库交互 - 它只需要住在同一个项目中。
调用模型的布局看起来像这样;
@inherits Umbraco.Web.Mvc.UmbracoViewPage<MyParser.Model.MyModel>
@{
Layout = null;
}
模型看起来像这样
namespace MyParser.Model
{
public class MyModel
{
public string Name { get; set; }
public string Value1 { get; set; }
public bool IsValid { get; set; }
}
}
代码在vanilla MVC应用程序中运行良好,但需要修改才能在Umbraco-app内部运行 - 但是如何? 这是Umbraco 7.6
答案 0 :(得分:0)
如果是文档类型模板,则需要劫持路径以注入视图模型。您创建继承自RenderMvcController
并覆盖Index
方法的控制器。
namespace Controllers
{
public class [YourDocTypeAlias]Controller : RenderMvcController
{
public override ActionResult Index(RenderModel model)
{
var vm = new ViewModel<MyModel>(model);
return View(vm);
}
}
public class ViewModel<TModel> : RenderModel
{
public ViewModel(RenderModel model) : base(model.Content, model.CurrentCulture) { }
public TModel CustomModel { get; set; }
}
public class MyModel
{
public string Name { get; set; }
public string Value1 { get; set; }
public bool IsValid { get; set; }
}
}
现在你的模板就变成了。
@inherits Umbraco.Web.Mvc.UmbracoViewPage<ViewModel<MyModel>>
@{
Layout = "Master.cshtml";
//you can now access properties from MyModel like Model.CustomModel.IsValid...
}
可在此link上找到更多信息。