假设我有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文件一起工作)
现在它会变得多一点吗?