【问题标题】:How do I create a new ActionResult in ASP.NET MVC?如何在 ASP.NET MVC 中创建新的 ActionResult?
【发布时间】:2016-01-08 16:33:56
【问题描述】:

如果我的 MVC 控制器正在使用类似的东西,

public ActionResult Index()
{

return View();
}

public ActionResult Display()
{

return View();
}

当我运行这样的东西时,它似乎无法识别“显示”的动作,例如,假设我在 razor 中使用了动作链接,

@Html.ActionLink("Display", "Display")

无论出于何种原因,当单击 ActionLink 时,这都不会路由到我创建的新操作结果“显示”。这样做的正确方法是什么?我需要一个单独的控制器来执行这个新操作吗?

【问题讨论】:

  • 您是否定义了任何自定义路由(例如在路由配置中)?
  • 控制器名称是什么?
  • 视图是和控制器同名的文件夹还是共享的?
  • 假设您的控制器名为 HomeController,那么如果您创建一个名为 /View/Home/Display.cshtml 的视图,它应该可以工作。如果不是,那么您的 /App_Start/RouteConfig.cs 文件是什么样的?你修改了吗?另外,您确定您的视图 (Display.cshtml) 有效吗?如果有疑问,您可以尝试用您知道可行的非常简单的东西替换您当前的版本。
  • 不,我使用默认路由。

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


【解决方案1】:

你的例子:

@Html.ActionLink("Display", "Display")

第一个参数是你的linkText,第二个参数是actionName。您确实应该为您的控制器名称添加第三个参数。所以,例如,这个:

@Html.ActionLink("Display", "Display", "Home")

意味着“显示”显示为您的链接文本,链接将导航到 HomeController 并根据需要调用显示操作方法。

在我上面的示例中,生成的 HTML 源代码如下所示:

<a href="/Display">Display</a>

("/Home" 没有显示,因为它暗示根据默认路由配置在顶层)

清楚吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多