FubuMvc:如果我将控制器和视图移动到一个文件夹中,我会得到404

时间:2012-01-21 18:14:56

标签: fubumvc

我是FubuMvc的新手,我只是在一个小项目上玩它。

我有默认的nuget包fubu配置,我正在使用Web表单视图引擎:

    public ConfigureFubuMVC()
    {
        // This line turns on the basic diagnostics and request tracing
        IncludeDiagnostics(true);

        // All public methods from concrete classes ending in "Controller"
        // in this assembly are assumed to be action methods
        Actions.IncludeClassesSuffixedWithController();

        // Policies
        Routes
            .IgnoreControllerNamesEntirely().IgnoreControllerFolderName()
            .IgnoreMethodSuffix("Html")
            .RootAtAssemblyNamespace();

        // Match views to action methods by matching
        // on model type, view name, and namespace
        Views.TryToAttachWithDefaultConventions();

        // View Engine
        this.Import<WebFormsEngine>();
    }

我在我的网站root中创建了一个控制器和一个视图,如下所示: 〜/ IndexController.cs

namespace MovieApp
{
public class IndexController
{
    private MoviesDBEntities _db = new MoviesDBEntities();

    public MovieIndexViewModel Index()
    {
        return new MovieIndexViewModel { Movies = _db.Movies.ToList() };
    }

    public class MovieIndexViewModel
    {
        public IEnumerable<Movie> Movies { get; set; }
    }
}
}

以及随之而来的视图: 〜/的Index.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" MasterPageFile="/Site.Master" Inherits="MovieApp.Index" %>
...

当我浏览〜/ Index时,它可以正常工作。

现在我想将我的控制器移动到一个新文件夹“Movies”。所以我移动控制器和视图,并将控制器上的命名空间更改为MoviesApp.Movies。 当我导航到〜/ Movies / Index时,它会在我的IndexController.Index()ActionMethod中遇到一个断点,但是会显示一个404。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

我假设您正在使用WebForms引擎,对吧?对于WebForms视图解析,FubuMVC假设视图的命名空间与视图位置完全匹配。当你移动视图时,这两个东西不再匹配。如果您已经安装了R#,只需打开后面的代码并调整命名空间 - 并确保命名空间也在aspx上更改。

更好的建议可能是切换到Spark视图引擎或FubuMVC中的Razor支持已经在飞行中。