我创建了一个基本的mvc3网站,每个控制器代表一个url结构中的第一个文件夹。
例如,下面的“食物”和“饮料”文件夹是控制器。只有两个控制器包含其中的所有子项。即在示例的第一行中,controller = food,method = asian
在第二行控制器= food,method = pad-thai等等。
www.mysite.com/food/asian/ www.mysite.com/food/asian/pad-thai www.mysite.com/food/italian/chicken-parmigiana www.mysite.com/drinks/cocktails/bloody-mary
我如何编写路线,以便www.mysite.com/food/asian/pad-thai将指向食品控制员和该控制器内的付费泰式方法,并且还有一条规则从www.mysite发送。 com / food / asian / to food controller and asian index method ??
答案 0 :(得分:3)
MVC设计模式不是用于重写URL以指向文件夹结构。它可以做到这一点,但它肯定不是它的主要目的。如果您尝试使用静态内容创建URL结构,则可能更容易使用IIS中内置的URL rewriting功能。
如果您要创建完整的MVC应用程序,请设置FoodController
和DrinkController
以提供您的观看次数,例如:
public class FoodController : Controller
{
public ActionResult ViewDishByTag(string itemType, string itemTag)
{
// If an itemType is displayed without itemTag, return an 'index' list of possible dishes...
// Alternatively, either return a "static" view of your page, e.g.
if (itemTag== "pad-thai")
return View("PadThai"); // where PadThai is a view in your shared views folder
// Alternatively, look up the dish information in a database and bind return it to the view
return ("RecipeView", myRepo.GetDishByTag(itemTag));
}
}
使用上面的示例,您的路线可能看起来像这样:
routes.MapRoute(
"myRoute",
"{controller}/{itemType}/{itemTag}",
new
{
controller = UrlParameter.Required,
action = "ViewDishByTag",
itemtype = UrlParameter.Optional,
itemTag = UrlParameter.Optional
}
);
您的问题并未包含有关您的实施的详细信息,因此,如果您希望扩展任何内容,请更新您的问题。