Подтвердите и перезагрузите PartialView с помощью Razor - PullRequest
0 голосов
/ 18 марта 2012

Я новичок в MVC3 и Razor.

У меня есть "баннер внимания" на главной странице в виде частичного просмотра, который я хочу "подтвердить", щелкнув ссылку, чтобы закрыть баннер (без перезагрузки страницы).Я считаю, что мне нужно использовать jQuery и вызов Ajax, но я просто не могу найти правильную комбинацию.

Вот часть моего _Layout.cshtml:

<section id="main">
    <span id="attentionBar">@{ Html.RenderPartial("_AttentionBarPartial"); }</span>
    @RenderBody()
</section>

Thisмой частичный вид (просто использую Session в качестве ярлыка, чтобы заставить его работать).Я не уверен, что использовать в качестве «ссылки» для перезагрузки представления:

    @{ this.Layout = null;}
    @if(! String.IsNullOrWhiteSpace(@Session["Attention"].ToString()))
    {    
        <div class="attentionPanel">
            <span class="attentionLabel">Attention</span>
            @Session["Attention"].ToString()
            <span class="attentionLabel">
@*   WHAT DO I PUT HERE *@
                @Ajax.ActionLink("X", "AcknowledgeAttentionBar", "Home", new AjaxOptions{ UpdateTargetId="attentionPanel", InsertionMode=InsertionMode.Replace })
            </span>              
        </div>
    }

Вот мой контроллер Home.Опять же, я не уверен, что код является правильным, но по существу я устраню условие, которое показывает баннер внимания.

public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewBag.Message = "Home Controller Updated At " + DateTime.Now.ToLongDateString()
            + " " + DateTime.Now.ToLongTimeString();

        return View();
    }

    public PartialViewResult AcknowledgeAttentionBar()
    {
        Session["Attention"] = String.Empty;
        return PartialView("_AttentionBarPartial");
    }
}

1 Ответ

1 голос
/ 18 марта 2012

2 вещи:

  1. Убедитесь, что вы включили сценарий jquery.unobtrusive-ajax.js на свою страницу, чтобы Ajax.ActionLink работал помощник, и отправляете запрос AJAX при нажатии ссылки вместо обычного перенаправления:

    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
    
  2. В вашем AjaxOptions вы указали UpdateTargetId="attentionPanel", но в вашей разметке нет элемента с id="attentionPanel". У вас есть div с class="attentionPanel", но это не то же самое. С другой стороны, вы завернули свой баннер в <span id="attentionBar">, так что вы, вероятно, имели в виду UpdateTargetId="attentionBar".

...