gpt4 book ai didi

c# - 为什么我的 View 没有在 _Layout.cshtml 中呈现

转载 作者:太空宇宙 更新时间:2023-11-03 23:09:18 25 4
gpt4 key购买 nike

我正在从 Pro ASP.NET 4.0 一书中学习 ASP.NET,但我一直坚持添加 CartController 和 Views/Cart/Index.cshtml

我添加了这样的内容:

public class CartController : Controller
{
private IProductRepository repository;

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

public ViewResult Index(string returnUrl)
{
return View("Index", "~/Views/Shared/_Layout.cshtml", new CartIndexViewModel
{
Cart = GetCart(),
ReturnUrl = returnUrl
});
}

public RedirectToRouteResult AddToCart(int productId, string returnUrl)
{
Product product = repository.Products
.FirstOrDefault(p => p.ProductID == productId);

if (product != null)
{
GetCart().AddItem(product, 1);
}
return RedirectToAction("Index", new { returnUrl });
}
private Cart GetCart()
{
Cart cart = (Cart)Session["Cart"];
if (cart == null)
{
cart = new Cart();
Session["Cart"] = cart;
}
return cart;
}
}
}

然后我添加到我的购物车->索引操作 View (右键单击->添加 View ),如下所示:

@model SportsStore.WebUI.Models.CartIndexViewModel
@{
ViewBag.Title = "Sklep sportowy: Twój koszyk";
}

<h2>Twój koszyk</h2>
<table width="90%" align="center">
<thead>
<tr>
<th align="center">Ilość</th>
<th align="left">Produkt</th>
<th align="right">Cena</th>
<th align="right">Wartość</th>
</tr>
</thead>
<tbody>
@foreach(var line in Model.Cart.Lines) {
<tr>
<td align="center">@line.Quantity</td>
<td align="left">@line.Product.Name</td>
<td align="right">@line.Product.Price.ToString("c")</td>
<td align="right">@((line.Quantity * line.Product.Price).ToString("c"))</td>
</tr>
}
</tbody>
<tfoot>
<tr>
<td colspan="3" align="right">Razem:</td>
<td align="right">
@Model.Cart.ComputeTotalValue().ToString("c")
</td>
</tr>
</tfoot>
</table>
<p align="center" class="actionButtons">
<a href="@Model.ReturnUrl">Kontynuuj zakupy</a>
</p>

在我的页面上的产品摘要中,我有一个按钮可以将产品添加到购物车,然后重定向到此 localhost:port/Cart/Index 页面。这是这个导航按钮:

@model SportsStore.Domain.Entities.Product

<div class="item">
<h3>@Model.Name</h3>
@Model.Description

@using(Html.BeginForm("AddToCart", "Cart")) {
@Html.HiddenFor(x => x.ProductID)
@Html.Hidden("returnUrl", Request.Url.PathAndQuery)
<input type="submit" value="+ Dodaj do koszyka" />
}
<h4>@Model.Price.ToString("c")</h4>
</div>

问题是购物车运行良好,但它的 View 未嵌入到主布局 /Shared/_Layout.cshtml 中。它只是显示为单独的页面,不包含任何 html 标题或正文内容,仅包含网站的内容部分。

我发现的同一示例的 github 项目与 Visual Studio 主项目的完成方式完全相同。 https://github.com/akatakritos/SportsStore

我检查了图书代码 list ,没有发现任何错误。为什么它不能正确显示为主要布局的一部分?而是在单独的 View 中!

感谢您的帮助。

编辑:

我有 Views/Shared/_ViewStart.cshtml

@{
Layout = "~/Views/Shared/_Layout.cshtml";
}

最佳答案

将您的 _ViewStart.cshtml 移动到 Views/_ViewStart.cshtml(而不是 Views/Shared/)。 MVC 不在共享文件夹中寻找它。

关于c# - 为什么我的 View 没有在 _Layout.cshtml 中呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39979743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com