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操作吗?
您可以在单个操作中响应不同的视图
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
。你可以用这个参数做任何你想做的事。