asp.net-mvc-4 - 如何使用 asp.net mvc 路由来调用不同的 ActionResult 方法并显示与实际情况不同的 URL?

标签 asp.net-mvc-4 controller asp.net-mvc-routing

假设我有一个名为 ProductController 的 Controller 类。

我将使用三星作为假设的产品类别。

我的页面上有一个 Html.ActionLink,如下所示

~/Product/Samsung?t=Sony

现在假设我没有名为 Samsung 的 ActionResult 方法。

但是假设我有更多像上面这样的链接

~/Product/Toshiba?t=LG

~/Product/Sony?t=Dynex

别介意 t=?部分。

有没有一种方法可以让所有这些 ActionLink 在我的产品 Controller 中调用相同的 ActionResult 方法?

public ActionResult TelevisionCategory()
{
}

类似于某种 URL 路由,以便任何特定格式的 URL 都会命中 TelevisionCategory 方法?

最佳答案

听起来您只需要一个自定义路由,该路由将标识符作为第二个 URL 段而不是操作名称。

类似以下内容就足够了(您需要将其添加到路由配置中的默认路由之上):

routes.MapRoute(
    "Products",                                           
    "Product/{category}",                            
    new { controller = "Product", action = "TelevisionCategory" }  
);

然后,您的操作方法应如下所示:

public ActionResult TelevisionCategory(string category)

参见here了解有关创建自定义路线的更多信息。

如果可以选择使用 MVC5,您还可以使用 attribute routing ,这更加直观和简洁。

关于asp.net-mvc-4 - 如何使用 asp.net mvc 路由来调用不同的 ActionResult 方法并显示与实际情况不同的 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27626391/

相关文章:

asp.net-mvc - 将index.html设置为默认页面

asp.net-mvc - ASP MVC 4 不处理静态文件

asp.net-mvc-4 - 检查SignalR组是否为空?

c# - 使用 Active Directory 或成员数据库的 MVC 4 身份验证

javascript - 如何在 Angular 的父 Controller 中访问子 Controller 范围?

java - Controller /Servlet 在 ServiceAPI 上抛出 NoClassDefFoundError

asp.net-mvc - ASP.NET MVC。路由和 URL 构建

c# - 如何在 MVC C# 网站中识别我的主页是从哪里加载的(即调用 URL)

asp.net - ASP.NET MVC数据注释MaxLength验证不起作用

ruby-on-rails - Rails : most Quiz attributes passing to params, 除了 user_id 之外。为什么?