2013-04-30 66 views
4

我有一个动作的结果,我想它显示为使用AJAX在我看来div标签,这是我的作用的结果如何在视图中显示actionResult?

public ActionResult Details(string id) 
    { 
     var subscriber = new SubscribersModel(); 
     IEnumerable<Subscribe> list = from s in dbcontext.Subscribes select s; 
     foreach (var sb in list) 
     { 
      if (sb.cin == id) 
      { 
       subscriber.cin = sb.cin; 
       subscriber.name = sb.name; 
      } 
     } 
     return PartialView("Details",subscriber); 
    } 

,这是我的DetailsView

@model _3SDWebProject.Models.SubscribersModel 

<fieldset> 
<legend>SubscribersModel</legend> 

<div class="display-label"> 
    @Html.DisplayNameFor(model => model.name) 
</div> 
<div class="display-field"> 
    @Html.DisplayFor(model => model.name) 
</div> 

<div class="display-label"> 
    @Html.DisplayNameFor(model => model.cin) 
</div> 
<div class="display-field"> 
    @Html.DisplayFor(model => model.cin) 
</div> 
</legend> 

,这是我想告诉我的行为结果的索引视图:

@model IEnumerable<_3SDWebProject.Models.SubscribersModel> 
@{ 
    ViewBag.Title = "Subscribers"; 
    } 

<script> 
    function details(id) { 
    var url = '/Subscribers/Details/' + id; 
    $.ajax({ 
     url: url, 
     type: 'GET', 
     data: id, 
     success: function() { 
      $(".sidebar").html(); 
     } 
    }); 
} 

$(function() { 
    $(".details-logo").on('click', function() { 
     details($(this).attr("DtNo")); 
     alert("ok"); 
    }); 

}); 
    </script> 
    <div class="sidebar"> 
     //Here i want to show my result !!!!!!! 
    </div> 

<div class="content" style="width: 700px; margin-left: 250px; height: 545px;margin-top: -30px;"> 
<h2>Subscribers</h2> 
table class="altrowstable" id="alternatecolor"> 
<tr> 
    <th> 
     CIN 
    </th> 
    <th> 
     Name 
    </th> 
    <th> 
</tr> 
@foreach (var item in Model) { 
<tr id="[email protected]"> 
    <td> 
     @Html.DisplayFor(modelItem => item.cin) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.name) 
    </td> 
</tr> 
    //this is my actionLink 
    @Html.ActionLink("Details", "Details", new { id = item.cin }, new { @class = "details-logo",@DtNo=item.cin}) 
} 

所以请如果有人有任何想法,我将非常感激。 注:当我按我的细节动作链接它给我的真实信息,但不是在我的侧边栏,但在这样一个独立的观点:

enter image description here

回答

2

简单地改变你的Ajax功能

$.ajax({ 
     url: url, 
     type: 'GET', 
     data: id, 
     success: function (result) { 
      $(".sidebar").html(result); 
     } 
    }); 

这将让订阅者详细信息页面,并把它添加到.sidebar

编辑:

更改您的onclick事件处理程序以停止超链接的默认操作。只需添加返回false以停止将您带到新页面的超链接。见下文。

$(function() { 
    $(".details-logo").on('click', function() { 
     details($(this).attr("DtNo")); 
     alert("ok"); 
     return false; 
    }); 

}); 
+0

感谢@UmairP,我更新我的问题 – Mohammadov 2013-04-30 12:40:23

+0

@Mohammadov我已经更新我的答案。 – 2013-04-30 12:54:04

+0

感谢@UmairP,现在它完美运行 – Mohammadov 2013-04-30 13:52:06

1

改变你的Ajax功能

function details(id) { 
    var url = '@Url.Action("Details", "Subscribers")'; 
    var params = { 
     id:id 
    } 
    $.ajax({ 
     url: url, 
     type: 'GET', 
     data: JSON.stringify(params), 
     success: function (result) { 
      $(".sidebar").html(result); 
     } 
    }); 
} 
+0

您需要将结果添加到'sidebar'元素中。以前的答案会做到这一点。 – 2013-04-30 12:35:20

+0

感谢@Saptal,我更新了我的问题,以及如何将结果添加到我的边栏中? – Mohammadov 2013-04-30 12:39:22

+0

@Mohammadov,我已经更新了答案,von v指出错误 – Satpal 2013-04-30 12:40:43