Я пытаюсь применить некоторые настраиваемые шаблоны к виду бритвы. Это немного особенный, вот пример.Пользовательский шаблон в режиме бритвы
Эта модель содержит объект Person с именем и фамилией.
шаблон будет выглядеть следующим образом ведьма я написал бы в файле cshtml
<div data-template-id="testTemplate" data-template-model="@Model.Person">
<span>{{Firstname}}</span>
<span>{{Lastname}}</span>
</div>
Я бы тогда сделать метод HtmlHelper, заполняющий шаблон с данными из Model.Person
Так хар у меня есть получил доступ к данным, но я не уверен, как получить доступ к представлению и получить шаблон.
public static MvcHtmlString Test<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression){
var model = html.ViewData.Model;
string propName = "";
if (expression.Body is MemberExpression)
propName = ((MemberExpression)expression.Body).Member.Name;
var value = model.GetType().GetProperty(propName).GetValue(model, null);
// TODO: get template and insert data from model
return new MvcHtmlString($"<div>{value}</div>");
}
Я знаю, что это немного странно, почему я сделал бы это. Но короткий ответ заключается в том, что в некоторых условиях мне нужно вернуть некоторые совершенно разные html, основанные на некоторых внутренних условиях. В этом случае я просто полностью удалю шаблон.
Сначала я бы предложил вам описать, что вам нужно сделать без htmlhelper, потому что мне кажется, что вы слишком усложняете вещи. Если вам действительно нужно пройти модель и шаблон, вы можете сделать что-то вроде: public static IHtmlString Test (этот помощник HtmlHelper, модель ModelType, шаблон строки), а затем в бритве Html.Test (модель, @ "ваш шаблон здесь"); – eugen
Причина, по которой я не вводил шаблон, как вы предположили, объясняется тем, как я намерен его использовать. При написании шаблона/разметки я хочу, чтобы Visual Studios intellisense и форматирование кода. И все это будет потеряно, если я напишу его как строковый ввод. – Galtrold