ASP.NET MVC3 / Razor。
我发现当我创建一个动作链接时,比如说:
@Html.ActionLink(product.Title, "Detail", "Products", new { id = product.ProductID }, null)
MVC3引擎创建我的产品链接。例如:
http://myhost/{ActionUrl}/PRODID
但是,如果我的产品ID包含任何特殊字符,则不会对其进行URL编码。
http://myhost/{ActionUrl}/PROD/ID
当然,这会破坏我的路由。 我的问题是:
谢谢!
答案 0 :(得分:4)
如果您的ID包含特殊字符,我建议您将其作为查询字符串传递,而不是路径的一部分。如果没有为崎岖不平的道路做好准备。查看following blog post。
答案 1 :(得分:1)
我没有让它在路径中工作,但是为了使这个工作作为QueryString参数,因为@Darin在这里指出的是代码:
@Html.ActionLink(product.Title, "Detail", "Products", new { id = product.ProductID }, "")
为我创建了actionLink作为查询字符串:Products/Detail?id=PRODUCTID
我在Global.asax.cs中的路线如下所示:
routes.MapRoute(
"ProductDetail",
"Products/Detail",
new { controller = "Products", action = "Detail" }
);
在我的ProductController中:
public ActionResult Detail(string id)
{
string identifier = HttpUtility.HtmlDecode(id);
Store.GetDetails(identifier);
return RedirectToAction("Index", "Home");
}