【问题标题】:Simple lack of understanding - MVC Routing简单的缺乏理解——MVC路由
【发布时间】:2013-10-22 18:04:37
【问题描述】:
我想在控制器中调用一个方法。为此,假设默认路由,我必须有一个与我正在调用的控制器匹配的视图。
所以如果我有一个控制器操作
public ActionResult Edit(booking booking)
那么我必须有一个名为 Edit 的视图。
对吗?
我想要做的是从给定页面调用我的控制器中的任何操作,而不存在同名视图。
因此,如果我在“编辑”页面上,我应该能够调用名为 createproduct 的操作,而没有 createproduct 视图。
【问题讨论】:
标签:
asp.net-mvc-4
model-view-controller
asp.net-mvc-routing
url-routing
【解决方案1】:
您不需要对每个控制器操作都有一个视图。你可以通过调用正确的 URL 来调用一个动作,这是 MVC 和路由的优点之一。路线不必代表物理位置。你应该可以做到以下/Controller/Edit/booking
【解决方案2】:
控制器操作不必返回视图。你往往会看到 action 方法返回 View(),默认情况下它会渲染一个与 action 方法同名的视图。但是您可以返回 View("SomeOtherViewName")。您还可以返回各种其他结果,例如 FileResult(返回文件)、HttpStatusCodeResult(返回没有内容的 HTTP 响应代码)、JsonResult(返回 Json)、Content(返回一些字符串)等。Controller 类有帮助的方法返回其中一些结果类型:文件、Json、内容。