Добавьте тег <b> через скрипт для oocss
Я готовлюсь обновить сайт и думаю об использовании oocss. Я знаю, что есть много смешанных мнений о oocss, но пока это кажется хорошим выбором для моего проекта. Единственное, что мне не нравится в этом, - это использование тегов в HTML для стилизации сложных модулей. Документация oocss гласит, что для вставки этих тегов нужно использовать какие-то сценарии, облегчающие их удаление в будущем, когда они больше не нужны, но в них нет подробностей, как это сделать. Если бы кто-нибудь мог указать мне решение или дополнительную информацию о том, как реализовать это, я был бы признателен за это. Мой сайт написан с asp в C#, и я буду использовать шаблоны бритвы. Я также хотел бы достичь этой серверной части, а не с помощью java-скрипта, если это возможно. Благодарю.
Это пример HTML для сложного модуля:
<div class="mod complex">
<b class="top"><b class="tl"></b><b class="tr"></b></b>
<div class="inner">
<div class="bd">
<p>Lorem ipsum.</p>
</div>
</div>
<b class="bottom"><b class="bl"></b><b class="br"></b></b>
Благодаря Марку я искал несколько примеров html-помощников и нашел этот пост.
Я немного изменил код, поэтому мой помощник выглядит так:
public class Complex : IDisposable
{
private readonly ViewContext _viewContext;
private bool _disposed = false;
public Complex(ViewContext viewContext)
{
_viewContext = viewContext;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!_disposed)
{
_disposed = true;
_viewContext.Writer.Write(
@"</div>
<b class=""bottom""><b class=""bl""></b><b class=""br""></b></b>
</div>"
);
}
}
}
public static class HtmlExtensions
{
public static Complex Complex(this HtmlHelper htmlHelper)
{
htmlHelper.ViewContext.Writer.Write(
@"<div class=""mod complex"">
<b class=""top""><b class=""tl""></b><b class=""tr""></b></b>
<div class=""inner"">"
);
return new Complex(htmlHelper.ViewContext);
}
}
И тогда, на мой взгляд, я включил:
@using (Html.Complex())
{
<div class="bd">
<p>Lorem ipsum.</p>
</div>
}
Но теперь есть ли способ включить класс CSS в представление так, чтобы он был помещен в классы первого div? Извините, если это глупый вопрос, но я очень плохо знаком с C# и MVC в целом. Вот что у меня так далеко:
Я изменил статический класс html.extensions на это:
public static class HtmlExtensions
{
public static Flow Flow(this HtmlHelper htmlHelper, string classname)
{
htmlHelper.ViewContext.Writer.Write(@"<div class="" " + classname + @"mod complex flow"">
<b class=""top""><b class=""tl""></b><b class=""tr""></b></b>
<div class=""inner"">"
);
return new Flow(htmlHelper.ViewContext);
}
}
И я поставил это на мой взгляд:
@using (Html.Flow("bgtest"))
{
<div class="bd">
<div style="height:442px; width:980px; background-color: grey;"></div>
</div>
}
Я получаю эту ошибку: CS1501: нет перегрузки для метода "Поток" принимает 0 аргументов.
1 ответ
Я не уверен, есть ли какой-либо открытый исходный код, чтобы помочь вам достичь oocss в ASP.NET MVC или Razor. Я хотел бы предложить создать многократно используемые помощники html, которые визуализируют модули (кнопки, нумерацию страниц и т. Д.), Используя oocss.
Например создать кнопку с помощью oocss. Вы можете иметь отдельный помощник HTML CssButton
который отображает контент с ожидаемым html с переданной моделью. Таким образом, вы можете использовать в любом месте в представлениях, как,
@Html.CssButton(model)
Для создания пользовательских помощников HTML
http://www.asp.net/mvc/tutorials/older-versions/views/creating-custom-html-helpers-cs
Даже вы можете обернуть все HTML-помощники, которые отображают модули, в отдельную сборку, чтобы их можно было многократно использовать в разных проектах.