ASP.NET MVC actionresult多个页面

时间:2015-11-30 10:26:40

标签: c# asp.net asp.net-mvc

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

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

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

e.g:

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

最好的方法是什么?

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

2 个答案:

答案 0 :(得分:1)

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

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();
    }
}

答案 1 :(得分:0)

你有控制器方法:

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 option对象等网址,则其值为Detail1。你可以用这个参数做任何你想做的事。