【发布时间】:2018-04-09 22:40:17
【问题描述】:
我正在尝试如下设置路由。
现在我的 URL 看起来像 www.mysite.com/Products/index/123
我的目标是设置像 www.mysite.com/123
这样的 URL其中:Products 是我的控制器名称,index 是我的操作名称,123 是 可为空的 @987654321 @参数。
这是我的路线:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"OnlyId",
"{id}",
new { controller = "Products", action = "index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
这是我的行动方法
public ActionResult index (WrappedViewModels model,int? id)
{
model.ProductViewModel = db.ProductViewModels.Find(id);
model.ProductImagesViewModels = db.ProductImagesViewModels.ToList();
if (id == null)
{
return HttpNotFound();
}
return View(model);
}
这是我的模型包装器:
public class WrappedViewModels
{
public ProductViewModel ProductViewModel { get; set; }
public ProductImagesViewModel ProductImagesViewModel { get; set; }
public List<ProductImagesViewModel> ProductImagesViewModels { get; set;
}
在此 URL 上引发错误:www.mysite.com/123
问题是: 为什么我的视图返回此错误以及如何避免此行为?
提前致谢。
【问题讨论】:
-
您的
WrappedViewModels定义如何?这应该可以正常工作。您正在尝试的 404 网址是什么? -
嗨。我已经编辑了我的问题,这个 URL “www.mysite.com/123”出现错误
-
您需要包含所有路线,因为顺序很重要。
-
该路由必须是第一个,但这也意味着您的大多数其他 url 都可以工作(您需要一个路由约束)。您需要显示所有路线定义
-
我已经用请求的信息更新了我的问题,希望对您有所帮助。
标签: c# asp.net-mvc routing