在局部视图内,在ajax链接上单击更新局部视图

时间:2014-03-13 12:38:16

标签: javascript jquery ajax asp.net-mvc

我有一个有部分视图的视图

主视图

....
....
@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 &nbsp; to &nbsp; @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没有多少经验,任何人都可以建议我该怎么办?

我尝试过的事情

  1. @Ajax.ActionLink("Delete", "DeleteResponse", new { id = @times.ResponseId }, new AjaxOptions ())
  2. @Ajax.ActionLink("Delete", "DeleteResponse", new { id = @times.ResponseId }, new AjaxOptions {UpdateTargetId="dummy"})
  3. 然后在控制器

    public ActionResult DeleteResponse(int id)
    {
    
        _responseRepository.DeleteResponse(id);
    
        return new EmptyResult();
    }
    

    两者都没有工作仍然会将我重定向到新的网址。

    1. @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. 这无休止地警告你好。

      编辑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");
          });
      

      我警告开始,然后完成然后失败,当我加载主视图时,所有两次,当我点击删除按钮时局部视图它将我重定向到不同的路线。

      现在,当我点击删除时,我收到控制台错误: enter image description here

1 个答案:

答案 0 :(得分:0)

您可以执行以下检查:

<强> 1。我猜你已经添加了jquery.unobtrusive-ajax.js

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
  • 确保为页面加载了它。通过萤火虫检查。
  • 尝试在页面底部添加。
  • 如果使用低于版本4的MVC,请在web.config中启用不显眼的javascript。

<强> 2。除此之外,我没有看到@ Ajax.ActionLink的持有人

   @Ajax.ActionLink(
    "load partial view", 
    "Delete", 
    "DeleteResponse", 
    new AjaxOptions { UpdateTargetId = "result" }
   )

持有人

<div id="result"></div>