Asp.net mvc MVC通过当前测试的目的是什么;控制员;及;行动“;作为参数值
我必须通过我的操作链接传递一个额外的参数来指示它们的来源(因为我需要相应地更改页面中的反向链接) 由于它是一个控制器名称,我决定将其命名为Asp.net mvc MVC通过当前测试的目的是什么;控制员;及;行动“;作为参数值,asp.net-mvc,razor,Asp.net Mvc,Razor,我必须通过我的操作链接传递一个额外的参数来指示它们的来源(因为我需要相应地更改页面中的反向链接) 由于它是一个控制器名称,我决定将其命名为controller e、 g.示例链接可能是: @Html.ActionLink(item.Name, "Options", "Questionnaire", new { id = item.QuestionnaireId, controller = "templates" }, null) QuestionnaireControl
controller
e、 g.示例链接可能是:
@Html.ActionLink(item.Name, "Options", "Questionnaire", new {
id = item.QuestionnaireId,
controller = "templates" }, null)
QuestionnaireController
中的接收操作如下所示:
public ActionResult Options(int id, string controller)
当操作被点击时,我注意到控制器值不是模板
,而是当前控制器的名称(即问题控制器
)
作为一个实验,我添加了一个动作
参数,例如:
public ActionResult Options(int id, string controller, string action)
操作值也是当前操作(即选项
)
我的解决方法是将我的参数重命名为source
,但是为什么MVC要麻烦地将名称controller
和action
映射到action参数?我假设这将应用于任何/所有路由映射值,但这是为了什么
为什么MVC要麻烦地将控制器和操作的名称映射到操作参数
我相信它是作为或其他价值提供者(可能是)的一部分完成的。Net MVC使用,因此框架使用提供的值来填充方法参数。控制器名称、操作名称甚至区域名称都是Url中提供的值
我假设这适用于任何/所有路由映射值,但这是为了什么
ValueProvider用于路由数据以确定要使用的匹配路由,它也恰好是提供数据以填充方法参数的同一对象。您正在经历的副作用很可能不是他们试图实现的功能
使用ValueProviders定位值并将其绑定到模型(或方法参数)