【问题标题】:asp.net mvc another controller in the same folderasp.net mvc 同一文件夹中的另一个控制器
【发布时间】:2014-01-22 14:26:07
【问题描述】:

我有一个包含 ReportController 的文件夹“Report”。

现在我想将 AgreementController 添加到同一个文件夹中。

从 javascript 我有一个运行“下载”操作的代码(下载文件)。

当我从 javascript 运行时 - Report/Download/id='5' 一切正常。

当我从 javascript 运行时 - Report/Agreement/Download/id='5' 一切都不好。

如何从协议控制器运行“下载”操作? 我不想要一个文件夹一个控制器结构。

我认为只有领域可以帮助我吗?

【问题讨论】:

  • 试用协议/下载/id='5
  • 您是否还可以检查您的路由定义并在需要时添加一个额外的定义来覆盖默认的 {controller}{method}{id}
  • 谢谢大家。我确实会考虑领域,因为将来我很可能需要更多报告。那么区域可以解决我的问题吗?

标签: javascript asp.net-mvc controller


【解决方案1】:

根据路由:

url: "{controller}/{action}/{id}"

你的代码是:

Report/Agreement/Download/id='5' 

所以在你的情况下:

 Controller= Report
 action=  Agreement 
 Id= Download.

这就是你得到错误的原因

您需要从通话结束中删除报告使用此:

Agreement/Download/id='5'

【讨论】:

    【解决方案2】:

    如果您是在同一视图页面中编写 js 而不是在外部 js 文件中, 您可以在 ajax 调用文件方法中使用 mvc url.action 来调用适当的控制器和动作方法如下所述

    语法: url: '@Url.Action("ActionMethodName","ControllerName",new {Parameters})'

    在你的情况下,它会是这样的:

    1. 调用报表控制器的下载方法

      url: '@Url.Action("Download","Report",new { id = "Value" })'

    2. 调用协议控制器的下载方法

      url: '@Url.Action("Download","Agreement",new { id = "Value" })'

    如果您使用的是外部 js 文件,则如下所示

    1. url: serverbaeurl + "/Report/Download?id=" + "Value"

    2. url: serverbaeurl + "/Agreement/Download?id=" + "Value"

      (这里的 serverbaseurl 将是网站的域名)

    (您必须根据需要添加其他 ajax 选项)

    【讨论】:

      猜你喜欢
      • 2010-12-29
      • 2016-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-16
      • 2020-11-01
      • 1970-01-01
      相关资源
      最近更新 更多