C# 为什么我的JQuery函数在尝试渲染局部视图时失败

C# 为什么我的JQuery函数在尝试渲染局部视图时失败,c#,asp.net-mvc,jquery,partial-views,C#,Asp.net Mvc,Jquery,Partial Views,我试图使用ajax更新局部视图,但由于某些原因,它失败了 控制器: [HttpPost()] public ActionResult DisplaySections(string id) { DataContext db = new DataContext(); var Data = (from p in db.vwData.Where(a => a.CourseId == id) group p by p.Sectio

我试图使用ajax更新局部视图,但由于某些原因,它失败了

控制器:

[HttpPost()]
public ActionResult DisplaySections(string id)
{
    DataContext db = new DataContext();

    var Data = (from p in db.vwData.Where(a => a.CourseId == id)
                          group p by p.SectionId into g
                          select g.Key).ToList();

    return PartialView("DisplaySections", Data);
}
阿贾克斯:

部分:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>
<%@ Import Namespace="Course.Models" %>

<table>
<% if (Model != null)
           foreach (var item in Model) {
           if (item == null) continue; %>

        <tr>
            <td>
                <%: item.SectionId%>
            </td>
            <td>
                <%: item.Description%>
            </td>            
        </tr>

    <% } %>

    </table>

主视图:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<%@ Import Namespace="Course.Models" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Course - Sections
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<div style="text-align: left; height: 202px;">
<table>
<tr>
    <th>Course Id</th>
    <td><input type="text" name="CourseId" id="CourseId"/></td>
</tr>
<tr>
    <th>Course Name</th>
    <td><input type="text" name="CourseName" id="CourseName"/></td>
</tr>
</table>

<div id="partial">
<% Html.RenderPartial("DisplaySections"); %>
</div>

</div>

</asp:Content>

课程-部分
课程Id
课程名称

让我们尝试几件事:

  • 尝试不指定数据类型。别提了
  • 尝试创建url:指向绝对路径(可能使用url.Action?)而不是相对路径

  • 你的局部视图充满了错误

    控制器操作将
    列表
    (或
    列表
    ,具体取决于
    节ID
    属性的类型)传递到此视图:

    [HttpPost()]
    public ActionResult DisplaySections(string id)
    {
        DataContext db = new DataContext();
    
        List<string> data = 
            (from p in db.vwData.Where(a => a.CourseId == id)
             group p by p.SectionId into g
             select g.Key).ToList();
    
        return PartialView("DisplaySections", data);
    }
    

    它怎么会失败?打开Firebug控制台,查看是否有任何错误。这可能是一百万件事。没有jQuery?服务器返回错误500?您发布到的URL不是您所期望的?@MNGwinn它甚至可以执行控制器操作,我甚至可以在控制器操作中将鼠标悬停到“data”时看到数据,但随后它会将“error”返回给jQuery函数。是否控制器操作(列表)和jQuery(html)中的数据类型不匹配?@SergioTapia我有jQuery,服务器也在返回数据。它从控制器操作返回“error”到jQuery。在呈现局部视图时,我通过在父视图中传递“Model”使局部视图工作。我的方式可以接受吗?还是我应该追求强型解决方案?你应该追求强型解决方案。
    [HttpPost()]
    public ActionResult DisplaySections(string id)
    {
        DataContext db = new DataContext();
    
        List<string> data = 
            (from p in db.vwData.Where(a => a.CourseId == id)
             group p by p.SectionId into g
             select g.Key).ToList();
    
        return PartialView("DisplaySections", data);
    }
    
    <%@ Control 
        Language="C#" 
        Inherits="System.Web.Mvc.ViewUserControl<List<string>>" 
    %>
    
    <table>
        <% if (Model != null) { %>
            <% foreach (string item in Model) { %>
                <% if (item == null) continue; %>
                <tr>
                    <td>
                        <%: item %>
                    </td>
                </tr>
            <% } %>
        <% } %>
    </table>