【发布时间】:2015-06-07 13:26:55
【问题描述】:
我正试图围绕 .NET MVC5 路由展开思考。
我有一个表格:
@using (Html.BeginForm("ProductsCheaperThan", "Home", FormMethod.Post))
{
<input type="text" name="comparisonPrice" />
<button type="submit">Search!</button>
}
我有一个控制器Home 和一个动作ProductsCheaperThan,它接受一个参数comparisonPrice
public ActionResult ProductsCheaperThan(decimal comparisonPrice)
{
ViewBag.FilterPrice = comparisonPrice;
var resultSet = new ProductService().GetProductsCheaperThan(comparisonPrice);
return View(resultSet);
}
这会将输入中的值(假设我要发布的值是20)返回到我的操作,并正确地将我路由到~/Home/ProductsCheaperThan。问题是,我想被路由到~/Home/ProductsCheaperThan/20
我想这样做,这样如果有人将该页面添加为书签,他们在重新访问该页面时就不会收到错误。
我认为添加如下内容:
routes.MapRoute(
name: "ProductsCheaperThan",
url: "Home/ProductsCheaperThan/{comparisonPrice}",
defaults: new { controller = "Home", action = "ProductsCheaperThan", comparisonPrice = 20 }
);
可能会起作用,我有一个解决问题的方法,可以将表单更改为 GET
@using (Html.BeginForm("ProductsCheaperThan", "Home", FormMethod.Get))
并生成一个~/Home/ProductsCheaperThan?comparisonPrice=20 的 URL,但它使用了一个查询字符串,这并不是我想要的。
谁能帮我把我的网址弄对吗?
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-5 asp.net-mvc-routing