Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET MVC 3.0 -- Error executing child request for handler 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'

Tags:

asp.net-mvc

I am using ASP.NET MVC 3.0 and getting the following error in *_Shared\Layout.cshtml*

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

I get error at @{ 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>

In Controllers\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);
        }

    }
}

In Views\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
        }
    )
}   
like image 501
Peace Avatar asked Dec 03 '25 09:12

Peace


2 Answers

I could make the example to work.

There is a problem, however, with the code as it is posted. Note the line break in your exampe:

@ 
{ 
    Layout = null; 
} 

While it should actually be

@{ 
    Layout = null; 
} 

It generates the error you quoted "Error executing child request for handler 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'", which is unhelpful, but when I pressed F5 I was taken to a page with a better description:

Parser Error Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.

Parser Error Message: A space or line break was encountered after the "@" character. Only valid identifiers, keywords, comments, "(" and "{" are valid at the start of a code block and they must occur immediately following "@" with no space in between.

like image 57
Evgeny Avatar answered Dec 05 '25 22:12

Evgeny


Use the [ChildActionOnly] attribute on the Menu action like this:

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

    return PartialView(categories);
}
like image 42
karim Avatar answered Dec 05 '25 23:12

karim



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!