0

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);
}

アヤックス:

$('#CourseId').focusout(function (e) {
    e.preventDefault();
    var link = '/Course/DisplaySections';
    $.ajax({
        type: 'POST',
        url: link,
        data: { id: $('#CourseId').val() },
        dataType: 'html',
        success: function (result) {
            $("#partial").html(result);
        },
        error: function (result) {
            alert("Failed")
        }
    });
});

部分的:

<%@ 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>
4

2 に答える 2

1

部分的なビューはエラーでいっぱいです。

コントローラのアクションは、List<string>(またはプロパティList<int>のタイプに応じてSectionId)このビューに渡します。

[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);
}

それでも、部分的なビューでは、いくつかitem.SectionIdとを使用しようとしていますitem.Description

まず、ビューを強く型付けして、コンパイル時に使用できるものと使用できないものをIntellisenseが表示できるようにします。

<%@ 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>
于 2012-07-11T05:43:21.583 に答える
0

いくつか試してみましょう:

  1. データ型を指定しないようにしてください。そのままにしておいてください。
  2. 相対パスではなく、絶対パス(Url.Actionを使用しますか?)を指すurl:ポイントを作成してみてください。
于 2012-07-10T22:47:21.977 に答える