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