【问题标题】:Load different view based on url parameter with out changing controller action method in asp mvc基于url参数加载不同的视图而不改变asp mvc中的控制器操作方法
【发布时间】:2017-01-25 19:47:42
【问题描述】:

我想知道下面的黑客是否可能。 尝试了多种方法,但它需要在 action 方法中使用一些条件语句。

我很可能正在寻找基于路由的解决方案,但不确定如何实现。

假设我有一个 Acton Method Index()

public ActionResult Index()
{
    return View();
}

上述方法是在家庭控制器下。 此外在 Views > Home 文件夹中还有两个视图文件...

  1. Index.cshtml
  2. Index_New.cshtml。

我相信可以使用在 URL 参数中传递的 id 加载不同的视图,但这需要更改上述操作方法,我不希望这样。

我们可以在不改变动作方法的情况下做一些事情吗?

【问题讨论】:

  • 可能,但您必须创建一个新操作,并在路由中将新网址映射到该操作
  • 不是不改变动作方法,没有。您可以基于 URL 在同一视图中分支以显示不同的 HTML,而无需更改操作,但您无法加载完全不同的视图。

标签: asp.net asp.net-mvc razor asp.net-mvc-routing


【解决方案1】:

创建一个新的操作方法。更新您的路线注册,以便请求 yourSite/Home/News/Index 将由这个新的 aciton 方法处理。

以下代码使用属性路由来指定新操作方法的路由模式。如果你想返回不同于约定的东西(动作名称),你可以将视图名称传递给视图方法

[Route("Home/News/Index")]
public ActionResult NewsIndex()
{
    return View("Index_New");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    相关资源
    最近更新 更多