2014-05-09 143 views
0

首先让我说我认为这个网站是天赐之物,我非常感谢我学到的所有东西。我正在使用一个MVC3组件。我想填充一个选择列表,当用户选择其中一个选项时,我想要加载一个显示数据的局部视图。一切工作到目前为止,除了我错过了刷新局部视图的一块。最初加载页面时,我在代码中看到空容器。我没有得到JS错误,Firebug显示正确格式化的HTML返回。那么我缺少什么操作部分来刷新页面上的局部视图?请提前告知并告知。用Ajax返回部分视图,MVC 3

观:

<tr> 
    <th>Select a User to view their Roles:</th> 
    <td><%= Html.DropDownList("UserListForRoleView", list, "Please choose a User")%></td> 
</tr> 
<tr> 
    <td> 
     <% Html.RenderPartial("ViewUsersInRole");%> 
    </td> 
</tr> 

$(document).ready(function() { 
    $('#UserListForRoleView').change(function() { 
    var selectedID = $(this).val(); 
    $.get('/UserAdminRepository/ViewUsersInRole/?user=' + selectedID) 
    }); 
}); 

控制器:

public ActionResult ViewUsersInRole() 
    { 
     string user = Request["user"]; 
     string[] selectedRoles = Roles.GetRolesForUser(user); 
     List<string> data = new List<string>(); 
     if (selectedRoles.Length > 0) 
     { 
      data = selectedRoles.ToList<string>(); 
     } 
     else 
     { 
      data.Add("No data found"); 
     } 

     ViewData["UsersinRole"] = data; 

     return PartialView("ViewUsersInRole"); 
    } 

的PartialView(在它的全部内容):

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> 
    <ul> 
<%  
    List<string> list = ViewData["UsersinRole"] as List<string>; 
    if (list != null && list.Count > 0) 
    { 
     foreach (string item in list) 
     { %> 
     <li><%: item %></li> 
    <% } 
    } 
%> 
</ul> 

enter image description here

+0

'$ .get'需要你错过了一个回调参数。您必须执行收到响应时发生的情况。 –

回答

0

追加HTML在td这样的:

<td id="partialcontainer"> 
    <% Html.RenderPartial("ViewUsersInRole");%> 
</td> 

并添加HTML它:

$(document).ready(function() { 
    $('#UserListForRoleView').change(function() { 
     var selectedID = $(this).val(); 
    $.get('/UserAdminRepository/ViewUsersInRole/?user=' + selectedID,function(response){ 

    $('#partialcontainer').html(response); 
      }) 
     });        
     }); 

小改进的代码,总是使用Url.Action生成网址:

$(document).ready(function() { 

$('#UserListForRoleView').change(function() { 

var selectedID = $(this).val(); 

var url = '@Url.Action("ViewUsersInRole","UserAdminRepository")'; 

url+"?user="+selectedID; 

$.get(url,function(response){ 

$('#partialcontainer').html(response); 

}); 

}); 

}); 

我修改了一些代码,使其更清晰可读。

+0

谢谢!在对JS进行修补之后,这可以创造奇迹! – Darkloki

+0

您所做的编辑会导致出现js错误:“函数正文后出现”SyntaxError:missing}“ – Darkloki

+0

我错过了关闭document.ready现在已编辑.. –

0

尝试的RenderAction

<% Html.RenderAction("ViewUsersInRole");%>