3

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の土地で再びうまくいきました。

4

1 に答える 1

3

変数の名前を次のような名前に変更してみてください。

[HttpPost]
 public ActionResult Edit(project model)
 {
}
于 2012-10-10T18:18:52.910 に答える