部分视图显示错误

时间:2011-02-04 22:44:30

标签: asp.net-mvc asp.net-mvc-2

我在局部视图中创建了一个下拉列表,我试图在我的aspx页面上呈现它。我收到一个错误:

  

{"Error executing child request for handler 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'."}

这是我使用ascx控件的aspx页面:

<td>
    <% Html.RenderAction("getFilterdData");%>
</td>

我的ascx控件如下所示:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewPage<IEnumerable<assist>>" %>
<%=Html.DropDownList("Assists", (SelectList)ViewData["Assists"], "--Select One--")%>

我的控制器代码是这样的:

public ActionResult getFilterdData()
{
    scorerep sc = new scorerep();
    ViewData["Assists"] = new SelectList(sc.FilterData(), "assist_a","");
    return View();
}

为什么我会收到此错误以及如何解决?

1 个答案:

答案 0 :(得分:1)

如果没有看到整个异常堆栈跟踪,很难提供帮助。以下是一些提示:

  • 确保您的部分Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<assist>>"而非Inherits="System.Web.Mvc.ViewPage<IEnumerable<assist>>"。您正在使用ASCX部分并继承System.Web.Mvc.ViewPage这是错误的。
  • 确保调用部分视图与控制器操作完全相同:getFilterdData.ascx(我在此处看到错字)
  • 确保Assist类包含名为assist_a的属性,因为这是您在呈现下拉列表时使用的属性
  • 确保在获取数据时,getFilterdData控制器操作中没有异常被抛出。

这是一个有效的例子:

型号:

public class Assist
{
    public string Id { get; set; }
    public string Value { get; set; }
}

控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult GetFilteredData()
    {
        // TODO: replace with your repository logic
        ViewData["Assists"] = new SelectList(new[] {
            new Assist { Id = "1", Value = "Assist 1" },
            new Assist { Id = "2", Value = "Assist 2" },
            new Assist { Id = "3", Value = "Assist 3" },
        }, "Id", "Value");
        return View();
    }
}

查看(~/Views/Home/Index.aspx):

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

部分:(~/Views/Home/GetFilteredData.ascx):

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<Assist>>" %>
<%= Html.DropDownList("Assists", (SelectList)ViewData["Assists"], "--Select One--") %>