C# 重定向到操作ASP.NET MVC
我目前读了弗里曼的书ASP.NETMVC4,并做了一个web应用程序。因此,有一个名为“Cart”的控制器,其方法为“AddToCart”和一个视图。在我们看来,我们有这样的代码:C# 重定向到操作ASP.NET MVC,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我目前读了弗里曼的书ASP.NETMVC4,并做了一个web应用程序。因此,有一个名为“Cart”的控制器,其方法为“AddToCart”和一个视图。在我们看来,我们有这样的代码: @model SportsStore.Domain.Entities.Product <div class="item"> <h3>@Model.Name</h3> @Model.Description @using (Html.BeginForm("Ad
@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>
代码编译得非常好,但我这里有一些问题
1) 如果在该行上放置断点:
return RedirectToAction("Index", new { returnUrl });
您将看到returnUrl的值为“/”。怎么用?他从哪儿弄来的
2) 这些代码行在做什么,因为书中没有关于它的信息
@Html.HiddenFor(x => x.ProductID)
@Html.Hidden("returnUrl", Request.Url.PathAndQuery)
索引是MVC“假定”的名称,因此如果转到索引视图,您将看不到它
/index
在url中。只是/
您显示的两个隐藏字段是MVC创建的
<input type="hidden" ...
方法控制器使用参数,隐藏字段是用于将参数发送到服务器端脚本的输入
"returnUrl", Request.Url.PathAndQuery
Request.Url.PathAndQuery
将由RedirectToAction用于确定将您发送到何处
return RedirectToAction("Index", new { returnUrl });
p、 产品ID
要管理您想要添加到图表中的内容,请让我先回答您的第二个问题。
@Html有一组生成Html的帮助程序
@Html.HiddenFor(x => x.ProductID)
将输出如下内容:
将输出如下内容:
现在来看AddToCart方法签名:
AddToCart(购物车、int-productId、字符串返回URL)
这些隐藏输入的值,但在发布到AddToCart时将包含在表单中。操作和模型绑定将相应地将它们分配给productId
和returnUrl
参数
下面回答第一个问题:
属性返回带有查询参数的请求的绝对路径。因此,如果您从索引视图访问AddToCart视图,那么returnUrl
将是“/”,
因为可以说,索引视图是webapp的根。这一切都取决于如何在应用程序中配置路由
有关更多信息,请观看这些教程:非常感谢。。。我找到了我问题的答案!
@Html.HiddenFor(x => x.ProductID)
@Html.Hidden("returnUrl", Request.Url.PathAndQuery)