Допустим, у меня есть 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)
}
}
Это не должно касаться данных RouteData из Web.Config
.
Смысл этого в том, чтобы я мог получить GetView и использовать его в другом месте.
Я знаю, что этот вопрос странен, но я нахожусь в уникальной ситуации, разрабатывающей систему CMS, поэтому мне действительно нужно что-то подобное.
Как я могу достичь этого:)?
Обновление: объяснение
_Layout.cshtml
Этот файл не имеет RenderBody, как обычно. Вместо этого у этого есть различные Области как этот.
@{
Render r = new Render("Content");
}
@r.Print()
В каждой области печатаются разные модули, например: информационный бюллетень или галерея. И для того, чтобы это было возможно, это сделано:
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)
Чувствует ли это теперь немного больше?