C# ASP.NET MVC:如何从控制器中查找视图?
我对网络编程几乎一无所知 我被要求向使用ASP.NET MVC的现有系统添加日志语句。我不知道系统。其他人开发了它 我已将日志语句添加到控制器。我想测试日志语句,但我不知道如何访问调用控制器方法的视图 也就是说,我认为如果我知道哪些视图调用什么,那么我可以在运行网站时导航到这些视图,从而测试日志记录。 通常在VisualStudio中,它会在方法上方提供带有引用的intellisense行,但在本例中不会。我想这是网络编程的“魔力”,呵呵C# ASP.NET MVC:如何从控制器中查找视图?,c#,asp.net-mvc,C#,Asp.net Mvc,我对网络编程几乎一无所知 我被要求向使用ASP.NET MVC的现有系统添加日志语句。我不知道系统。其他人开发了它 我已将日志语句添加到控制器。我想测试日志语句,但我不知道如何访问调用控制器方法的视图 也就是说,我认为如果我知道哪些视图调用什么,那么我可以在运行网站时导航到这些视图,从而测试日志记录。 通常在VisualStudio中,它会在方法上方提供带有引用的intellisense行,但在本例中不会。我想这是网络编程的“魔力”,呵呵 那么,我如何找出哪个视图调用哪个控制器方法呢?事实上,反
那么,我如何找出哪个视图调用哪个控制器方法呢?事实上,反过来说,视图是由控制器渲染的 如果从浏览器发送请求(如GET),MVC将首先查询其注册的路由,以确定该请求应路由到哪个控制器和操作方法。看见 路由在
registerOutes
方法中的Global.asax.cs
中设置
通常存在如下默认设置:“{controller}/{action}/{id}”
这意味着如果您浏览到http://myserver/Accounts/Edit/3
,此请求将被路由到AccountsController.cs
,在那里它将点击编辑(长id)
操作方法并将3
作为id
传递
另一方面,如果您在CustomersController.cs
中的Delete(long id)
操作中添加了日志语句,则您可能可以通过调用http://myserver/Customers/Delete/1337
需要注意的是动作方法上方的[HttpPost]
和[HttpDelete]
注释。这些定义了实现此操作所需的HTTP谓词。您无法通过发送GET
请求来实现[HttpPost]
操作
在操作方法的末尾,您可能会发现一行,如returnview(“Edit”,viewModel)代码>。这将告诉MVC使用哪个CSHTML视图文件进行渲染。CSHTML文件的路径将按照约定进行查找,MVC将查找的第一个位置是Views\{controllerName}\Edit.CSHTML
。但是如果设置了区域,它将首先查找{areaName}\Views\{controllerName}\Edit.cshtml
您可以在代码库中搜索的另一项内容是调用@Html.RenderAction
和@Url.Action
,它们用于从视图中调用操作。它们还将controllerName
和actionName
作为参数,例如@Url。Action(“Accounts”,“Edit”,new{id=3})
将呈现类似http://myserver/Accounts/Edit/3
控制器上操作的名称与视图的名称(按约定)匹配。例如,可以在~/Views/Log/Index.cshtml
上找到LogController
上的Index
操作。这是投入一些时间学习MVC基础知识的好时机,Shelby是正确的,除非该操作返回与操作名称不同的视图(“视图名称”)。这对我非常有用。谢谢!:-)