Это то, что мне нужно сделать:
У меня есть частичное представление (PV):
@if (Convert.ToBoolean(ViewData["IsLogged"].ToString()))
{
<div id="onlineStatus">
ONLINE >>
@Html.ActionLink("Take a Break", "GoOffline", "Account")
</div>
}
else
{
<div id="offlineStatus">
IN A BREAK >>
@Html.ActionLink("Go Online", "GoOnline", "Account")
</div>
}
Я помещаю этот PV в * _layout.cshtml *, поэтому каждый раз, когда я нажимаюна ActionLink страница должна оставаться прежней, а PV должен перерисовываться только асинхронно.
Я читаю об использовании Ajax.BeginForm и, похоже, ему нужен , но мой вопрос:
Q1: Должен ли я поставить внутри Ajax.BeginForm ??
@using (Ajax.BeginForm(new AjaxOptions {
UpdateTargetId="divStatus",
InsertionMode=InsertionMode.Replace })) {
<div id="divStatus">
@if (Convert.ToBoolean(ViewData["IsLogged"].ToString()))
{
<div id="onlineStatus">
ONLINE >>
@Html.ActionLink("Take a Break", "GoOffline", "Account")
</div>
}
else
{
<div id="offlineStatus">
IN A BREAK >>
@Html.ActionLink("Go Online", "GoOnline", "Account")
</div>
}
</div>
}
КОНТРОЛЛЕР ... чтобы вернуть себя?
public ActionResult GoOffline()
{
GoOffline();
ViewData["IsLogged"] = "False";
return PartialView("_OnlineStatusCtrl");
}
ПРОБЛЕМА:
Вся страница перерисовывается как PV, так что, я думаю, она НЕ рисует себя внутри
Проблема в том, как я называю Ajax.Beginform ?
Проблема в том, что я поместил внутри Ajax.BeginForm ?
Является ли проблема в том, что вместо этого я должен поставить Ajax.BeginForm на _layout.cshtml ?
... просто я просто все еще не понимаю MVC ??
: -)