HY! 我有这个控制器:
public ViewResult Hotel(string hotelSupplierCode, bool displayAllRooms, bool resend)
{
HotelModel model;
if (resend)
{
model = (HotelModel)Session["HotelDetails"];
HotelManager.ResendHotel(model.Hotel.Id);
model.Hotel.Status = 1;
}
else
{
model = HotelModel.GetGotel(hotelSupplierCode, displayAllRooms);
}
Session["HotelDetails"] = model;
return View("Hotel", model);
}
和这条路线:
routes.MapRoute(
"Hotel", // Route name
"{controller}/{action}/{hotelSupplierCode}/{displayAllRooms}/{resend}", // URL with parameters
new { controller = "Hotel", action = "Hotel", hotelSupplierCode = UrlParameter.Optional, displayAllRooms = UrlParameter.Optional, resend = UrlParameter.Optional }
问题在于,当我访问视图时,返回的URL就像这样:
http://localhost:49575/Hotel/Hotel?hotelSupplierCode=3711&displayAllRooms=False&resend=False
但我想要这样的东西:
http://localhost:49575/Hotel/Hotel/3711/False/False
那么如何隐藏属性名称?如果我手动设置第二个URL,它可以正常工作。
答案 0 :(得分:0)
尝试这样的路线
routes.MapRoute(
"Hotel",
"Hotel/Hotel/{hotelSupplierCode}/{displayAllRooms}/{resend}",
new { controller = "Hotel", action = "Hotel" },
new { hotelSupplierCode = @"\w+",displayAllRooms = @"\w+", resend= @"\w+"}
);
答案 1 :(得分:0)
我怀疑您的问题是由于您的路线顺序造成的。路径必须按照从最具体到最一般的顺序排列,通常以新项目中定义的默认路径结束。
确保将酒店路线放在默认路线之前。