La valeur ne peut pas être null ou vide. Nom du paramètre: contentPath
J'ai un multi-niveau de la Mise en page des pages maîtres dans un ASP.NET MVC 4.
J'ai le texte suivant:
<title>@ViewBag.Title</title>
L'ordre des pages de Disposition est comme suit:
- _Layout.cshtml
- _SubLayout.cshtml (basé sur _Layout.cshtml)
- Index.cshtml (basé sur _SubLayout.cshtml)
Je suis en train de l' @ViewBag.De titre à l'intérieur de l'Indice de l'Action. Cependant, je reçois l'exception suivante:
Valeur ne peut pas être null ou vide. Nom du paramètre: contentPath
Voici le code que j'ai. Je suis tout simplement du code de ASP.NET Modèles de Conception de livres pour VS 2012 /MVC 4
_Layout.cshtml
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>@ViewBag.Title</title>
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<meta name="viewport" content="width=device-width" />
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="main">
<div id="header">
<span><a href="@Url.Content("")">
<img alt="Agatha's Clothing Store"
src="@Url.Content("/Content/Images/Structure/lg_logo.png")"
border="0" /></a></span>
</div>
<div id="headerSummary">
@RenderSection("headerBasketSummary", required: false)
</div>
<div class="topBarContainer">
<div id="background">
<div id="navigation">
@RenderSection("MenuContent", required: false)
</div>
<div id="content">
@RenderBody()
</div>
<div style="clear: both;" />
</div>
</div>
@Html.Partial("_SiteFooter")
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/json2/20121008/json2.js"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-jtemplates.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/agatha-common-scripts.js")"></script>
</body>
</html>
_ProductCatalogProduct.cshtml
@model BaseProductCatalogPageView
@using Agathas.Storefront.Controllers.ViewModels.ProductCatalog
@using Agathas.Storefront.UI.Web.MVC.Helpers
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@if (IsSectionDefined("MenuContent"))
{
@RenderSection("MenuContent", required: false)
}
else
{
@Html.Partial("_Categories", ((BaseProductCatalogPageView)Model).Categories)
}
@RenderBody();
Index.cshtml
@model HomePageView
@using Agathas.Storefront.Controllers.ViewModels.ProductCatalog
@using Agathas.Storefront.Services.ViewModels
@using Agathas.Storefront.UI.Web.MVC.Helpers
@{
Layout = "~/Views/Shared/_ProductCatalogLayout.cshtml";
ViewBag.Title = "Home Page";
}
<img width="559" height="297"
src="@Url.Content("~/Content/Images/Products/product-lifestyle.jpg")"
style="border-width: 0px; padding: 0px; margin: 0px" />
<div style="clear: both;"></div>
<h2>Top Products</h2>
<div id="items" style="border-width: 1px; padding: 0px; margin: 0px">
<ul class="items-list">
@foreach (ProductSummaryView product in Model.Products)
{
<li class="item-detail">
<a class="item-productimage-link" href="@Url.Action("Detail", "Product", new { id = product.Id }, null)">
<img class="item-productimage" src="@Url.Content("~/Content/Images/Products/" + product.Id.ToString() +".jpg"))" /></a>
<div class="item-productname">@Html.ActionLink(product.BrandName + " " + product.Name, "Detail", "Product", new { id = product.Id }, null)</div>
<div class="item-price">@product.Price</div>
</li>
}
</ul>
</div>
Merci beaucoup
Pouvez-vous fournir la stacktrace?
Question bête, mais les deux ViewBags sont appelés les mêmes, même de capitalisation... Pouvez-vous fournir un peu de code pour avoir une meilleure idée du problème?
Question bête, mais les deux ViewBags sont appelés les mêmes, même de capitalisation... Pouvez-vous fournir un peu de code pour avoir une meilleure idée du problème?
OriginalL'auteur Bill | 2013-02-11
Vous devez vous connecter pour publier un commentaire.
Ce morceau de code est jeter de l'exception:
<a href="@Url.Content("")">
. Cela se produit parce que contentPath paramètre deUrl.Content
méthode ne peut pas être null ou vide.OriginalL'auteur user551113
Cela peut se produire si vous assignez une valeur à l'Enfant de Rasoir fichier de la vue qui est également définie dans le parent, mais elle est affichée dans une partielle appelée par la Mise en page.cshtml
Par exemple
_Layout.cshtml
|
(parent)
|
Parent.cshtml
|
(parent)
|
Page1.cshtml
En Page1.cshtml je ne
Dans Le Parent.cshtml je fais la même chose mais en utilisant le Umbraco appel:
La solution est de supprimer l'affectation du Parent.cshtml. Cela semble être un bug et j'ai peur que c'est la seule solution que j'ai trouvé. Espérons qu'il vous aide...
OriginalL'auteur csharpforevermore