Ajax的ActionLink方法
在Razor视图中,Ajax辅助方法可以通过Ajax属性访问,例如ActionLink方法可以创建一个具有异步行为的锚标签。
假如为Music Store创建一个“Daily Deal”链接,这个锚标签点击之后是在当页显示折扣专辑的详细信息,而不是
在一个新的页面显示。
那么我们可以这样写:
1
2
3
4
5
6
7
8
9
|
<div id="dailydeal>
@Ajax.ActionLink("点击这里获得折扣信息",
"Daily Deal",
new AjaxOptions{
UpdateTargetId="dailydeal",
InsertionMode=InsertionMode.Replace,
HttpMethod="GET"
})
</div>
|
第一个参数指定了链接文本,第二个参数指定了要异步调用的方法名称,第三个参数指定了发送请求和处理服务器
返回结果的方式。在这个示例当中,AjaxOption参数的选项指定了要使用来自服务器的响应元素替换id值为“dailydeal”
元素,为了得到服务器的响应,需要在控制器HomeController添加一个DailyDeal操作。
1
2
3
4
5
6
7
8
9
10
11
12
|
public ActionResult DailyDeal()
{
var albums = GetDailyDeal();
return PartialView("_DailyDeal",albums);
}
private Album GetDailyDeal()
{
return storeDB.Albums
.OrderBy(a => a.Price)
.First();
}
|
Ajax操作链接的目标操作的返回值是纯文本或者HTML,在这个示例当中将会通过渲染一个部分视图来返回HTML。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<p>
<img alt = "@Model.Title" src = @Model.AlbumArtUrl"/>
</p>
<div id = "album-detalils">
<p>
<em>Artist:</em>
@String.Format("{0:F},Model.Price")
</p>
<p class="button>
@Html.ActionLink("Add to cart","AddToCart",
"ShoppingCart",new {id = Model.AlbumId},"")
</p>
</div>
|