2012-03-08 427 views
3

我使用ASP.NET MVC 3.0和得到以下錯誤在* _shared \ Layout.cshtml *ASP.NET MVC 3.0 - 錯誤執行的處理子請求 'System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper'

執行處理程序'System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper'的子請求時出錯。

我在@{ Html.RenderAction("Menu", "Nav"); }

<!DOCTYPE html> 
<html> 
<head> 
    <title>@ViewBag.Title</title> 
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> 
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> 
</head> 

<body> 
    <div id = "header"> 
     <div class = "title">SPORTS STORE</div> 
    </div> 

    <div id = "categories"> 


     @{ Html.RenderAction("Menu", "Nav"); } 
    </div> 

    <div id = "content"> 
     @RenderBody() 
    </div> 

</body> 
</html> 

在控制器出現錯誤\ NavController:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using SportsStore.Domain.Abstract; 
using SportsStore.WebUI.Models; 

namespace SportsStore.WebUI.Controllers 
{ 
    public class NavController : Controller 
    { 
     private IProductRepository repository; 

     public NavController(IProductRepository repo) 
     { 
      repository = repo; 
     } 


     public PartialViewResult Menu() 
     { 

      IEnumerable<string> categories = repository.Products 
            .Select(x => x.Category) 
            .Distinct() 
            .OrderBy(x => x); 

      return PartialView(categories); 
     } 

    } 
} 

在瀏覽\導航\ Menu.cshtml:

@model IEnumerable<string> 

@ 
{ 
    Layout = null; 
} 

@Html.ActionLink("Home", "List", "Product") 

@foreach (var link in Model) 
{ 
    @Html.RouteLink(link, new 
     { 
      controller = "Product", 
      action = "List", 
      category = link, 
      page = 1 
     } 
    ) 
} 

回答

3

我可以讓示例工作。

但是,在發佈代碼時存在問題。注意你的exampe換行符:

@ 
{ 
    Layout = null; 
} 

雖然它實際上應該是

@{ 
    Layout = null; 
} 

它產生你所援引的「錯誤執行的處理子請求「錯誤System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper 「」,這是無益的,但是當我按下F5我被帶到一個網頁,一個更好的描述:

分析器錯誤描述:的解析過程中出現錯誤服務此請求所需的資源。請檢查以下 特定的分析錯誤詳細信息,並適當修改您的源文件 。

解析器錯誤消息: 「@」字符後遇到空格或換行符。只有有效的標識符,關鍵字,註釋,「(」和 「{」是有效的,在一個代碼塊的開始,他們必須出現 緊隨其後的「@」與之間沒有空格。

+0

這解決了我的問題! – 2013-06-02 21:41:37

2

使用[ChildActionOnly]屬性Menu這樣的動作:

[ChildActionOnly] 
public PartialViewResult Menu() 
{ 
    IEnumerable<string> categories = repository.Products 
           .Select(x => x.Category) 
           .Distinct() 
           .OrderBy(x => x); 

    return PartialView(categories); 
} 
相關問題