Здравствуйте.
Была такая проблемма: необходимо в пределенную область вывести из БД 10 рандомных записей (партнеров). С этим я справился. Но!
Как сделать так, чтобы список этих партнеров загружался
ОДИН раз, непосредственно при загрузке страницы, а потом оставался неизменным, то есть несмотря по какой ссылке перейдет пользователь, этот спикок отображался в том же виде и заново не загружался из базы? Я пробовал делать через ViewBag и RenderAction, но все равно: при переходе по любой ссылке список постоянно меняется.
Модель:
public class Partner
{
public int id { get; set; }
public string name { get; set; }
public string value { get; set; }
}
Контроллер:
public class HomeController : Controller
{
MarketingEntities storeDB = new MarketingEntities();
public ActionResult Index()
{
//ViewBag.Part = storeDB.partners.OrderBy(a => Guid.NewGuid()).Take(10);
var query = storeDB.mainpage.First();
return View(query);
}
public ActionResult GetPartnerList()
{
var query = storeDB.partners.OrderBy(a => Guid.NewGuid()).Take(10);
return PartialView(query);
}
public ActionResult About()
{
var query = storeDB.contactpage.First();
return View(query);
}
...
Представление:
@model IEnumerable<Marketing.Models.Partner>
@foreach (var a in Model)
{ <li class="first"><a href="#">@a.name</a></li> }
_layout:
<h3>Наши партнеры</h3>
<div class="bg1">
<ul>
@{Html.RenderAction("GetPartnerList");}
</ul>
</div>
Здравствуйте, Neco, Вы писали:
N>учтите, что с сессией можете нагрести немножко проблем в случаях, когда пользователь открывает две страницы браузера и работает паралелльно.
еще можно вспомнить проблемы возникающие при хранении данных сессии не в Inproc.
... << RSDN@Home 1.2.0 alpha 4 rev. 1270>>
Здравствуйте, cadet354, Вы писали:
C>Здравствуйте, Neco, Вы писали:
N>>учтите, что с сессией можете нагрести немножко проблем в случаях, когда пользователь открывает две страницы браузера и работает паралелльно.
C>еще можно вспомнить проблемы возникающие при хранении данных сессии не в Inproc.
То есть
...
[OutputCache(Duration=180)]
public ActionResult GetPartnerList()
{
var query = storeDB.partners.OrderBy(a => Guid.NewGuid()).Take(10);
return PartialView(query);
}
...
не совсем то что нужно?
Здравствуйте, Lucio, Вы писали:
L>То есть
L>L> ...
L> [OutputCache(Duration=180)]
L> public ActionResult GetPartnerList()
L> {
L> var query = storeDB.partners.OrderBy(a => Guid.NewGuid()).Take(10);
L> return PartialView(query);
L> }
L> ...
L>
L> не совсем то что нужно?
моя реплика была к тому что хранить эти данные в сессии иногда бывает плохо.
возвращаясь к кешу, то тут у тебя для всех клиентов будет кешироваться один и тот же список список. Тут надо смотреть тогда в сторону VaryByXXX, а этот XXX уже передавать как зеницу ока через все страницы
... << RSDN@Home 1.2.0 alpha 4 rev. 1270>>