我有一个有部分视图的视图
主视图
....
....
@if (Model.ProvidedResponseCount > 0)
{
<div id="providedTimes" data-url="@Url.Action("ProvidedAttendeeResponse", new { attendeeId = @Model.AttendeeId })">
</div>
}
....
....
这是部分视图
....
....
<tbody>
@foreach (var times in Model.ProvidedDateTimes)
{
<tr>
<td>
@times.StartDateTime to @times.EndDateTime
</td>
<td>@Html.ActionLink("Delete", "DeleteResponse", new { id = @times.ResponseId})</td>
</tr>
}
</tbody>
....
....
和删除方法actionlink在控制器中调用
public void DeleteResponse(int id)
{
_responseRepository.DeleteResponse(id);
}
每当我在局部视图中单击actionlink时,我都会被转发到不同的链接。
例如,localhost/Response/DeleteResponse/2
。有点链接。
但我希望保持同一页面,只想更新部分视图。
我该怎么办?
Ajax.Actionlink
会有帮助吗?
我对Ajax.ActionLink没有多少经验,任何人都可以建议我该怎么办?
我尝试过的事情
@Ajax.ActionLink("Delete", "DeleteResponse", new { id = @times.ResponseId }, new AjaxOptions ())
@Ajax.ActionLink("Delete", "DeleteResponse", new { id = @times.ResponseId }, new AjaxOptions {UpdateTargetId="dummy"})
然后在控制器
public ActionResult DeleteResponse(int id)
{
_responseRepository.DeleteResponse(id);
return new EmptyResult();
}
两者都没有工作仍然会将我重定向到新的网址。
@Ajax.ActionLink("Delete", "DeleteResponse", new { id = @times.ResponseId }, new AjaxOptions {OnSuccess = "update"})
$(function update(){ 警报(&#34;你好&#34); var url = $(&#34;#providedTimes&#34;)。data(&#39; url&#39;); url = url +&#34;&amp; t =&#34; + new Date()。getTime();
$.get(url, function (data) {
$('#providedTimes').html(data);
});
});
这无休止地警告你好。
编辑2:
@Ajax.ActionLink("Delete", "DeleteResponse", new { id = @times.ResponseId }, new AjaxOptions { UpdateTargetId="dummy",OnBegin = "begin",OnComplete="complete",OnFailure="fail",OnSuccess = "success"})
$(function begin() {
alert("begin");
});
$(function complete() {
alert("complete");
});
$(function fail() {
alert("fail");
});
我警告开始,然后完成然后失败,当我加载主视图时,所有两次,当我点击删除按钮时局部视图它将我重定向到不同的路线。
现在,当我点击删除时,我收到控制台错误:
答案 0 :(得分:0)
您可以执行以下检查:
<强> 1。我猜你已经添加了jquery.unobtrusive-ajax.js
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
<强> 2。除此之外,我没有看到@ Ajax.ActionLink的持有人
@Ajax.ActionLink(
"load partial view",
"Delete",
"DeleteResponse",
new AjaxOptions { UpdateTargetId = "result" }
)
持有人
<div id="result"></div>