使用 ASP.net MVC 是否可以将表单发布到控制器操作,其中包含不在表单中但来自 URL 的参数?
例如
GroupController 中的 Action 方法:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(int idOne, int idTwo, Model model)
{ ... }
路线:
"{controller}/{action}/{idOne}/{idTwo}"
发布网址:
/Employee/Show/1/42
在此示例中,表单被发布到不同的控制器,模型具有正确的值,但其他参数的默认值为 0。
我期望的行为是 ModelBinder 会看到我有两个与给定路由匹配的参数,并以与 GET 操作相同的方式将当前值 1 和 42 分配给参数。
不支持这种行为,还是我遗漏了什么?
编辑:需要明确的是Show
,控制器视图上Employee
的表单包含一个发布到不同控制器的表单。我们可以称之为Group
。
表单操作 URL 如下所示
/Groups/Create/0/0
表格声明如下
Html.BeginForm("Create", "Groups")
在尝试了许多不同的重载后,Html.BeginForm
我发现只有当表单操作 URL 与浏览器地址栏中的当前 URL 匹配时才会映射参数。
因此,如果我导航到 URL /Groups/Create/1/42
,我将有一个新表单。如果我随后提交表单,则 URL 路由值将传递给 POST 操作。