Ручная установка пути к файлу cshtml и игнорирование логики MVC - PullRequest
1 голос
/ 13 ноября 2011

Допустим, у меня есть 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)

Чувствует ли это теперь немного больше?

1 Ответ

0 голосов
/ 13 ноября 2011

Я наконец нашел свое решение!

Это прямо здесь!http://razorengine.codeplex.com/

Спасибо, что попытались:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...