我是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");
}
}
答案 0 :(得分:1)
2件事:
确保您已将jquery.unobtrusive-ajax.js
脚本包含在您的页面中,以便Ajax.ActionLink
帮助程序工作,并在单击链接而不是正常重定向时发送AJAX请求:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
在AjaxOptions
您已指定UpdateTargetId="attentionPanel"
但您的标记中没有id="attentionPanel"
的元素。你有一个class="attentionPanel"
的div,但这不是一回事。另一方面,您已将横幅包裹在<span id="attentionBar">
中,因此您可能需要UpdateTargetId="attentionBar"
。