首先让我说我觉得这个网站是天赐之物,我非常感谢所有我学到的东西。我有一个MVC3组件,我正在使用。我想填充一个选择列表,当用户选择其中一个选项时,我想要加载一个显示数据的局部视图。到目前为止一切都有效,除了我错过了刷新局部视图的部分。当页面最初加载时,我在代码中看到空容器。我没有得到JS错误,Firebug显示返回的格式正确的HTML。那么我缺少哪些操作部分来刷新页面上的局部视图?请提前通知和thanx。
观点:
<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>
答案 0 :(得分:0)
在td
中添加html,如下所示:
<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);
});
});
});
我修改了一些代码,使其更清晰,更易读。
答案 1 :(得分:0)
尝试使用RenderAction
<% Html.RenderAction("ViewUsersInRole");%>