Я использую CachedPartial html helper, который кэширует этот частичный вид.Частичный вид кеша с использованием Umbraco CachedPartial для другой модели
@Html.CachedPartial("PartialView", MyModel, 3600, true);
На мой взгляд, у меня следующая ситуация:
@Html.CachedPartial("PartialView", MyModel, 3600, true);
@Html.CachedPartial("AnotherPartialView", MyModel1, 3600, true);
@Html.CachedPartial("PartialView", MyModel3, 3600, true); // I want to reuse partial view
Кажется, что первый и третий вид тождественно из CachedPartial
...
Как сделать кэшируются парциальное параметром модели ?
Я пытался использовать
@Html.CachedPartial("PartialView", MyModel, 3600, true, false, new ViewDataDictionary(MyModel3));
но то же самое.
Edit: Я использовал другой подход, чем DZL и он работает
public static IHtmlString CachedPartial(this HtmlHelper helper, string partialViewName, object model, string cacheKey = null)
{
if (string.IsNullOrWhiteSpace(cacheKey)) {
return helper.CachedPartial(partialViewName, model, AppSettings.PartialCachingSeconds, true);
}
Func<object, ViewDataDictionary, string> fc = (o, v) => cacheKey;
return helper.CachedPartial(partialViewName, model, AppSettings.PartialCachingSeconds, true, contextualKeyBuilder: fc);
}
, а затем
@Html.CachedPartial("PartialView", MyModel, "a_key");
@Html.CachedPartial("AnotherPartialView", MyModel1);
@Html.CachedPartial("PartialView", MyModel3, "another_key"); // I want to reuse partial view
Спасибо за идею, см. Мой отредактированный пост :) –
@SnakeEyes great - работает для версии 7+. если вы хотите использовать этот подход, нет необходимости в методе расширения, его можно написать напрямую, см. мой отредактированный ответ - если вы хотите его упростить :) –