как передать больше параметров @Model в тот же шаблон razorengine - PullRequest
1 голос
/ 10 декабря 2011

например A.razortemplate

<html>
<title>@Page.Title</title>
<keywords>@Page.Title</keywords>
<body>
    crumb:<a href="">@Page.Title</a>><a href="">@Post.Title</a>
    <h3>@Post.Title<h3>
    @Post.Body
    by-@User.PostAuthor
</body>
</html>

приведенный выше код в одном шаблоне (A), он включает три объекта @Model, которые @ Page, @ Post, @ User.i читают код RazorEngine , при поиске которого может пройти только один @Model patameter к шаблону следующий код из проекта RazorEngine.

protected virtual ITemplate CreateTemplate<T>(Type templateType, T model)
{
    var instance = CreateTemplate(templateType);
    SetModel(instance, model);
    return instance;
}

Я ненавидел только то, что мог передать одну @ Model, мне нужен более гибкий метод, я могу удалить выражение crumb из шаблона в любое время, могу добавить время публикации.

для указанной выше проблемы, может быть, я могу создать новый класс и создать три свойства для @ page, @ post, @ user, я думаю, что это не идеальное решение.

кстати, я хочу взять RazorEngine в качестве внешнего интерфейса (например, шаблон строки и т. Д.), ASP.NET в качестве внутреннего просто выполнить операцию SQL и передать данные в front-end. Кто-то может дать некоторые предложения? Спасибо.

1 Ответ

1 голос
/ 21 декабря 2011

RazorEngine использует единственное свойство Model по умолчанию. Это свойство может быть любого типа, который вам нравится, так почему бы не создать составную модель:

public class TemplateModel
{
    public PostModel Post { get; set; }
    public UserModel User { get; set; }
    public PageModel Page { get; set; }
}

Таким образом, вы можете передать единственную модель и получить доступ к свойствам:

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