0
我已经实现了自定义html助手扩展方法来呈现我的剃须刀页面的局部视图,我担心我使用的方法是“太重”...这是HtmlHelper扩展过度杀伤力?
我想使用在我的web项目中常见的微调。我使用的微调需要许多元素:
<div class="panel-spinner-container">
<div class="sk-spinner sk-spinner-cube-grid">
<div class="sk-cube"></div>
<div class="sk-cube"></div>
<div class="sk-cube"></div>
<div class="sk-cube"></div>
<div class="sk-cube"></div>
<div class="sk-cube"></div>
<div class="sk-cube"></div>
<div class="sk-cube"></div>
<div class="sk-cube"></div>
</div>
<div class="panel-spinner-msg"><p>loading...</p></div>
</div>
不是包括这剃刀代码中,我希望有一个微调每一次,我想我会折腾到HTML的辅助方法,所以我可以做此:
<div>
@Html.PanelSpinner()
</div>
我创建该一个局部视图,其只包含从上面的div,和一个HTML辅助扩展方法:
public static MvcHtmlString PanelSpinner(this HtmlHelper html) {
var controllerContext = html.ViewContext.Controller.ControllerContext;
var viewData = html.ViewData;
var tempData = html.ViewContext.TempData;
using (var stringWriter = new System.IO.StringWriter()) {
var viewResult = ViewEngines.Engines.FindPartialView(controllerContext, "PanelSpinner");
var viewContext = new ViewContext(controllerContext, viewResult.View, viewData, tempData, stringWriter);
viewResult.View.Render(viewContext, stringWriter);
var stringResult = stringWriter.GetStringBuilder().ToString();
return new MvcHtmlString(stringResult);
}
}
这似乎是非常多的处理REQ的用于呈现微调。这种方法的性能开销是多少?对这种场景使用助手是否正常?还是我过度使用这种场景?有没有更好的(更高性能)的方式来做到这一点?
我非常喜欢易用性,但担心性能问题(例如,我只能使用@Html.RenderPartial(...)
,但后来我必须记住spinner partial的名称等等。辅助方法包装器更容易使用)
怎么样只用CSS? 这家伙只用css制作纺纱人http://tobiasahlin.com/spinkit/ –
你需要'记住'的唯一东西是“PanelSpinner”。你的扩展方法可以简单地为'public static MvcHtmlString PanelSpinner(this HtmlHelper html){return html.Partial(“PanelSpinner”); }' –
对我来说看起来很好,这就是你的页面上呈现了一百万个其他的东西,为什么你的东西会南下呢?这不像是你的微调器每帧渲染一次......你给每个微调器打个电话,我们在这里谈论多少个微调器? – Charleh