ASP.NET MVC 3.0 - Ошибка при выполнении дочернего запроса для обработчика 'System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper' - PullRequest
3 голосов
/ 08 марта 2012

Я использую ASP.NET MVC 3.0 и получаю следующую ошибку в * _Shared \ Layout.cshtml *

Ошибка выполнения дочернего запроса для обработчика '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);
        }

    }
}

В представлениях \ Nav\ 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
        }
    )
}   

Ответы [ 2 ]

3 голосов
/ 17 июля 2012

Я мог бы заставить пример работать.

Однако существует проблема с кодом, как он опубликован.Обратите внимание на разрыв строки в вашем экзамене:

@ 
{ 
    Layout = null; 
} 

Хотя на самом деле он должен быть

@{ 
    Layout = null; 
} 

Он генерирует указанную вами ошибку «Ошибка выполнения дочернего запроса для обработчика» System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper '", что бесполезно, но когда я нажал F5, меня перенаправили на страницу с более подробным описанием:

Описание ошибки синтаксического анализатора: при синтаксическом анализе требуемого ресурса произошла ошибкаобслуживать этот запрос.Пожалуйста, просмотрите следующие подробные сведения об ошибке разбора и измените исходный файл соответствующим образом.

Сообщение об ошибке синтаксического анализатора: после символа "@" произошел пробел или разрыв строки.Только действительные идентификаторы, ключевые слова, комментарии, "(" и "{" действительны в начале блока кода, и они должны появляться сразу после "@" без пробелов между ними.

2 голосов
/ 14 ноября 2013

Используйте атрибут [ChildActionOnly] в действии Menu следующим образом:

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

    return PartialView(categories);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...