ASP.NET MVC操作结果多个页面

本文关键字:结果 NET MVC 操作 ASP | 更新日期: 2023-09-27 18:25:05

我目前有一个产品控制器,每个产品都有一个硬编码的"产品"操作结果(因为产品是固定的,不会改变):

site.com/Products/Product 
site.com/nl/Products/Product 

这将导致每个产品都有一个包含所有信息的页面。现在,我想为每个产品创建多个页面,以突出显示一些功能或选项,而不是显示单个产品页面。

例如:

site.com/nl/Products/Product/Detail1
site.com/nl/Products/Product/Option2
site.com/nl/Products/Product/Option16

最好的方法是什么?

我应该创建例如ProductDetail1操作和ProductOption2操作吗?

ASP.NET MVC操作结果多个页面

您可以在单个操作中响应不同的视图

public class ProductsController : Controller
{
    public ActionResult Product(int id, string view,)
    {
       Product prod = Context.GetProduct(id);
       if(!string.IsNullOrEmpty(view))
       {
            switch(view.ToLower()){
                 case "detail": return View("Detail", prod.Detail);
                 case "option1": return View("Option1", prod.GetOption(1));
                 case "option2": return View("Option2", prod.GetOption(2));
             }
        }
        return View();
    }
}

好吧,你有你的控制器方法:

public class ProductsController : Controller
{
    public ActionResult Product(string option)
    {
        //here your logic
        return View();
    }
}

您可以更改默认路线:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{option}",
    defaults: new { controller = "Home", action = "Index", option = UrlParameter.Optional }
);

现在,如果您调用类似site.com/nl/Products/Product/Detail1的url,则控制器中的option对象将具有值Detail1。你可以用这个参数做任何你想做的事。