gpt4 book ai didi

c# - 重定向操作 ASP .NET MVC

转载 作者:太空宇宙 更新时间:2023-11-03 10:46:44 26 4
gpt4 key购买 nike

我目前正在阅读 Freeman 的书 ASP .NET MVC 4 并做了一个 Web 应用程序。因此,有一个名为“Cart”的 Controller ,其方法为“AddToCart”和一个 View。在 View 中我们有这样的代码:

@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="+ Add to cart" />
}

<h4>@Model.Price.ToString("c")</h4>
</div>

和 Controller 代码的方法:

public RedirectToRouteResult AddToCart(Cart cart, int productId, string returnUrl)
{
Product product = repository.Products
.FirstOrDefault(p => p.ProductID == productId);
if (product != null)
{
cart.AddItem(product, 1);
}
return RedirectToAction("Index", new { returnUrl });
}

代码编译得很好,但我有一些问题。

1) 如果在行上打断点:

return RedirectToAction("Index", new { returnUrl });

您会看到 returnUrl 的值为“/”。如何?他从哪里弄来的?

2)这几行代码是做什么的,因为书上没有相关资料。

@Html.HiddenFor(x => x.ProductID)
@Html.Hidden("returnUrl", Request.Url.PathAndQuery)

最佳答案

我先回答你的第二个问题。@Html 有一组生成 html 的助手。

@Html.HiddenFor(x => x.ProductID)

将输出如下内容:<input type="hidden" name="ProductID" value="1" />

@Html.Hidden("returnUrl", Request.Url.PathAndQuery)

将输出如下内容:<input type="hidden" name="returnUrl" value"/" />

现在看看 AddToCart 方法签名:

AddToCart(Cart cart, int productId, string returnUrl)

这些隐藏输入的值,但在发布到 AddToCart 操作时将包含在表单中,模型绑定(bind)会将它们分配给 productIdreturnUrl相应的论点。

接下来回答第一个问题:

Request.Url.PathAndQuery属性返回带有查询参数的请求的绝对路径。因此,如果您从索引 View 进入 AddToCart View ,那么 returnUrl将 ”/”,因为你的索引 View 是你的 webapp 的根,可以这么说。这一切都取决于如何在您的应用程序中配置路由。

有关更多信息,请观看这​​些教程:Controllers and Routing

关于c# - 重定向操作 ASP .NET MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23091269/

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