Ответ 1
@{
Func<String, IHtmlContent> foo = @<div>Say @item</div>;
}
Я большой поклонник продвижения и изменений. Мне ясно, что команда ASP.NET MVC убила одну из самых ценных функций веб-страниц (@helper), независимо от того, что кто-то думает. Если вы должны что-то удалить, замените его на что-то подобное по функциональности и использованию. До сих пор я не думаю, что ViewComponent решает, что не имеет значения TagHelper. Есть ли замена на это? Что-то, что принимает параметры и возвращает HtmlString.
Нет пакета Nuget в любом месте?
Некоторые люди называют это хорошим улучшением. Я полностью и решительно откладываю это мнение.
Я не вижу ничего вредного:
@helper foo(string something){
<div>Say @something</div>
}
var emailbody = classfilenameinAppCodefolder.foo("hello"); //store result in a variable for further processes
Что бы вы могли удалить такую ценную функцию? Что вы можете заменить?
Теперь я считаю, что это временное удаление перед RC. https://github.com/aspnet/Razor/issues/281 и https://github.com/aspnet/Mvc/issues/1130 Хорошо!!! лучше быть. Надеюсь, кто-то работает над этим. Без @helper создание больших HtmlString или 'template' будет серьезной болью.
Примечание. Частичный вид, похоже, не делает этого. Я думаю, что это только делает представления не возвращать вид переменной
Во-вторых,, что случилось с папкой App_Code?
@{
Func<String, IHtmlContent> foo = @<div>Say @item</div>;
}
Директива @helper
была удалена, так как она была неполной и ее текущий дизайн не вписывался в новый "способ ASP.NET 5", Одна из причин заключается в том, что помощники должны быть объявлены в папке App_Code
, в то время как ASP.NET 5 не имеет понятия специальных папок. Поэтому команда решила временно удалить эту функцию.
Я хотел бы расширить ответ @Alexaku и показать, как я реализовал вспомогательную функцию. Это полезно только на одной конкретной странице, но позволяет несколько раз выполнять фрагмент кода бритвы с входными параметрами. Синтаксис невелик, но я нашел его очень полезным в отсутствие функции бритвы @helper. Сначала объявите какое-то Dto, которое будет содержать входные параметры в функцию.
@functions {
private class Dto
{
public string Data { get;set; }
}
}
Затем объявите функцию бритвы. Обратите внимание, что значение displayItem может быть многострочным, а также обратите внимание, что вы получаете доступ к переменной Dto с помощью @item.
@{
Func<Dto, IHtmlContent> displayItem = @<span>@item.Data</span>;
}
Затем, когда вы хотите использовать шаблон бритвы, вы можете называть его следующим образом из любого места на странице.
<div>
@displayItem(new Dto {Data = "testingData1" });
</div>
<div>
@displayItem(new Dto {Data = "testingData2" });
</div>