手动设置cshtml文件的路径并忽略MVC逻辑

时间:2011-11-12 22:30:25

标签: c# asp.net-mvc asp.net-mvc-3 razor

假设我有2个文件位于同一个文件夹中。

/Test/View.cshtml

<h1>File that needs to be loaded in to a string</h1>

/Test/Content.cs

public class Content {
    public string GetView()
    {
        Return View("/Test/View.cshtml",someModel)
    }
}

它不应该从Web.Config

中了解RouteData

这样做的目的是,我能够检索GetView并在其他地方使用它。

我知道这个问题并且approch很奇怪,但我处于开发CMS系统的独特情况,所以我真的需要这样的东西。

我怎么能实现这个目标:)?


更新:说明

_Layout.cshtml

此文件没有正常的RenderBody。相反,它有像这样的不同区域。

@{
    Render r = new Render("Content");
}
@r.Print()

每个区域都打印出不同的模块,fx:简报或图库。为此,可以做到这一点:

public interface IModule
{
    string Name { get; set; }
    int Id { get; set; }
    string View();
}


public class ModuleList
{
    public List<IModule> Modules = new List<IModule>();

    public ModuleList()
    {
        Modules.Add(new ContentView() { Name = "Content" });
        Modules.Add(new GalleryView() { Name = "Gallery" });
        Modules.Add(new NewsletterView() { Name = "Newsletter" });
    }
}

这是ContentView类(许多模块之一)

public class ContentView: IModule
{
    public string Name { get; set; }
    public int Id { get; set; }

    DbModulesDataContext db = new DbModulesDataContext();

    public string View()
    {
        var q = (from c in db.mContents
                 where c.Id == Id
                 select c).FirstOrDefault();
        return ("<h1>"+q.Html+"</h1>");
    }
}

正如你现在所看到的那样,html与c#内联,但我想要反过来。 (我希望View()与cshtml文件一起工作)

现在它会变得多一点吗?

1 个答案:

答案 0 :(得分:0)

我终于找到了我的解决方案!

就在那里! http://razorengine.codeplex.com/

感谢您尝试:)