我无法为Title书写单词,所以我解释了我正在寻找的内容。实现产品/ Apple-ipad代替产品/ Index/23
目前,我在View中使用以下ActionLink代码。
@Html.ActionLink(@product.Name, "Index", "Product", new { id = @product.Id }, null)
此代码重定向到下面的操作方法,在产品控制器现在
public ActionResult Index(int id)
{
Product product = pe.Products.Where(p => p.Id == id).First();
ViewBag.Title = product.Name;
ViewBag.Description = product.MetaDescription;
ViewBag.Keywords = product.MetaKeywords;
return View(product);
}
,我想要的东西:不是mysite.com/Product/Index/22,我的网址应该是这样的mysite.com/Product/Apple-ipad。
我知道,我可以使用产品名称代替Id并将其传递给操作方法。但是,这种方式我认为查询会变慢,因为Id字段被索引,但Name不是。这是我唯一的选择吗?让我知道你将如何处理这个要求。
我已经看到了SO使用数字(我怀疑Id)和问题的标题。你如何看待这些人正在管理这个 – 2012-01-06 07:55:01
顺便说一句,我不能理解你的第一种方法。你是什么意思,通过使用非聚集索引。你可以把一个小的代码,可以帮助或一点解释....感谢 – 2012-01-06 08:01:34
注册全球asax路线: routes.MapRoute( “Product”, “{controller}/{action}/{id}/{ productname}“, new {controller =”Product“,action =”Index“,id =”“,productName =”“} ); 然后在控制器中,你只能看到id,因为它是唯一对你感兴趣的。 – linkerro 2012-01-06 08:05:17