Nat*_*han 4 c# asp.net-mvc umbraco
我试图将一个新的MVC模板添加到我过去几个月一直在开发的现有网站上.我有几个自定义控制器/模型设置工作正常.今天我尝试添加另一个新模板,我遇到了这个错误,我无法通过.Umbraco版本是7.04.
一,错误:
http://i.imgur.com/iH6cmUD.png
〜/查看/ MVCTest.cshtml
@inherits Umbraco.Web.Mvc.UmbracoViewPage<TestModel>
@{
Layout = null;
}
<h1>Hello, World!</h1>
Run Code Online (Sandbox Code Playgroud)
〜/ App_Code文件/测试/ TestController.cs
using System.Web.Mvc;
using Umbraco.Web.Models;
using Umbraco.Web.Mvc;
public class TestController : RenderMvcController {
public override ActionResult Index(RenderModel model) {
var test = new TestModel(model.Content, model.CurrentCulture);
return base.Index(test);
}
}
Run Code Online (Sandbox Code Playgroud)
〜/ App_Code文件/测试/ TestModel.cs
using System.Globalization;
using Umbraco.Core.Models;
using Umbraco.Web.Models;
public class TestModel : RenderModel {
public TestModel(IPublishedContent content, CultureInfo culture)
: base(content, culture) {
}
}
Run Code Online (Sandbox Code Playgroud)
有人看到任何明显的问题吗?这真的很奇怪,因为我有一些基本相同的代码适用于其他一些自定义模型和控制器,所以我完全混淆为什么任何新类型给我这个错误.
您的代码几乎是正确的,问题是您的视图被调用,MVCtest.cshtml因为可能是您的文档类型被调用MVCtest,但是您的Controller只是被调用TestController而不是MVCTestController.
Umbraco的路由非常具体,因为它将通过具有匹配名称的控制器路由特定文档类型的所有流量.
而且,你不需要return base.Index(test);,只是return CurrentTemplate(test);
另外一点是Umbraco默认会尝试通过Index操作进行路由,除非您有与模板名称匹配的操作.因此,您可以有多个模板,每个模板都有不同的操作.
| 归档时间: |
|
| 查看次数: |
6511 次 |
| 最近记录: |