MVC4 动作帖子中的奇怪行为。我创建了一个自定义路线,如下所示:
routes.MapRoute(
name: "Projects",
url: "{company}/{project}/{id}/{action}",
defaults: new { controller = "Projects", action = "Index" },
constraints: new { id = @"\d+" }
当我的编辑页面使用
<form action="/COMPANY/Projects/Edit/1" method="post">
(其中 Projects 是控制器的名称)更新工作正常,但是当我使用
@using (Html.BeginForm())
这转化为
<form action="/COMPANY/PROJECT/1/Edit" method="post">
COMPANY 和 PROJECT 都是动态值,看起来像这样
<form action="/sith-co/death-star/1/Edit" method="post">
模型为空。无论哪种方式,数据都是相同的Request.Form
,它确实采取了正确的行动。唯一的区别是操作字符串和模型为空
控制器
[HttpPost]
public ActionResult Edit(project project)
{
编辑
感谢JOBG的回答,当我与另一个控制器遇到类似问题时,我能够发现。由于某种原因,{project}
路由中的参数被绑定而不是模型。通过将参数名称更改为{projectName}
all 再次在 MVC 领域中表现良好。