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">
モデルはnullです。データはどちらのRequest.Form
方法でも同じですが、正しいアクションを実行します。唯一の違いは、アクション文字列とモデルがnullであることです。
コントローラ
[HttpPost]
public ActionResult Edit(project project)
{
編集
JOBGの回答のおかげで、別のコントローラーで同様の問題が発生したときに発見することができました。何らかの理由{project}
で、ルートのパラメーターがモデルではなくバインドされていました。パラメータ名を{projectName}
allに変更することで、MVCの土地で再びうまくいきました。