使用Razor确认并重新加载部分视图

时间:2012-03-18 02:44:37

标签: asp.net asp.net-mvc-3 razor partial-views

我是MVC3和Razor的新手。

我在母版页上有一个“关注横幅”作为部分视图,我想通过点击链接来“确认”以关闭横幅(不重新加载页面)。我相信我需要使用jQuery和Ajax调用,但我似乎无法找到合适的组合。

以下是我的_Layout.cshtml的一部分:

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

这是我的部分视图(仅使用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>
    }

这是我的家庭控制器。同样,我不确定代码是否正确,但基本上我将清除显示注意标志的条件。

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 个答案:

答案 0 :(得分:1)

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"的元素。你有一个class="attentionPanel"的div,但这不是一回事。另一方面,您已将横幅包裹在<span id="attentionBar">中,因此您可能需要UpdateTargetId="attentionBar"