2014-05-09 172 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");%>