Bir yerinden Jilet bir Bölüm doldurmak
Benim ana motivasyon için çalışıyor yapmak için Javascript sadece gerekli bir kısmi alt kısmında, sayfanın geri kalan kısmı ile Javascript ve ortasında sayfası nerede, kısmi işlenmiş.
Burada yapmaya çalıştığım şey basit bir örnek:
Burada doğru vücut önce Komut bölümü ile düzeni.
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
</head>
<body>
@RenderBody()
<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
@RenderSection("Scripts", false)
</body>
</html>
İşte örnek bir görünüm bu düzeni kullanarak.
<h2>This is the view</h2>
@{Html.RenderPartial("_Partial");}
@section Scripts {
<script type="text/javascript">
alert("I'm a view.");
</script>
}
Ve burada kısmi varlık görünümü işlenmiş.
<p>This is the partial.</p>
@* this never makes it into the rendered page *@
@section Scripts {
<script type="text/javascript">
alert("I'm a partial.");
</script>
}
Bu örnekte, işaretlemeyi görünümünde belirtilen bölüme yerleştirilir, ama basit biçimlendirme değildir. Ustura ile kısmi bir görüntüden bir bölüm doldurmak için mümkün mü? Bu sadece genel olarak dahil olmadan sayfanın altındaki parçaları gerekli Javascript almanın başka yöntemleri nelerdir?
CEVAP
Bu bulduğum çözüm HtmlHelper sınıfı için birkaç uzatma yöntemleri yazmaktır. Bu kısımlar manzaralı bir script gerekli olduğunu söylemek sağlar, ve sonra etiketi yazar düzeni görünümünde Yardımcısı benim yöntem için gerekli komut dosyaları Yayımla diyorum
Burada yardımcı yöntemleri:
public static string RequireScript(this HtmlHelper html, string path, int priority = 1)
{
var requiredScripts = HttpContext.Current.Items["RequiredScripts"] as List<ResourceInclude>;
if (requiredScripts == null) HttpContext.Current.Items["RequiredScripts"] = requiredScripts = new List<ResourceInclude>();
if (!requiredScripts.Any(i => i.Path == path)) requiredScripts.Add(new ResourceInclude() { Path = path, Priority = priority });
return null;
}
public static HtmlString EmitRequiredScripts(this HtmlHelper html)
{
var requiredScripts = HttpContext.Current.Items["RequiredScripts"] as List<ResourceInclude>;
if (requiredScripts == null) return null;
StringBuilder sb = new StringBuilder();
foreach (var item in requiredScripts.OrderByDescending(i => i.Priority))
{
sb.AppendFormat("<script src=\"{0}\" type=\"text/javascript\"></script>\n", item.Path);
}
return new HtmlString(sb.ToString());
}
public class ResourceInclude
{
public string Path { get; set; }
public int Priority { get; set; }
}
Bunu bir kez kısmi görünümü sadece @Html.RequireScript("/Path/To/Script")
aramak gerekir.
Ve sayfa düzeni görünümünü kafasına Bölüm @Html.EmitRequiredScripts()
Ara.
Bu bir avantaj mı dışarı yinelenen komut dosyası istekleri ot olanak sağlamasıdır. Eğer belirli bir senaryo lazım bu kısmi görünümler/birden çok görünüm varsa, güvenli bir şekilde sadece bir kez çıktı mı olacağını varsayabiliriz
Karşılaştırma sadece JavaScript zaman ...
Doğru bir şekilde kullanmayı "böl...
MVC3 kullanarak Varlık Çerçevesi için ...
'üretmek için mevcut en iyi çözüm...
IIS7 dağıtım - 'sistem yinelenen....