2

剣道UIグリッドのCreateイベントからリクエストが生成されるアクションがあります。情報はすべて正しく投稿されており、アクションパラメータ名が「model」の場合はモデルバインダーが正しく機能します。

アクションが次のように定義されている場合:

[HttpPost]
public ActionResult Create(ModelType post)
{                                                                                                    
}

すべてが正しく機能します。

代わりに、アクションは次のようになります。

[HttpPost]
public ActionResult Create(ModelType model) //changed parameter Name to model
{                                                                                                    
}

無効なモデル状態が表示され、次のメッセージが表示されます。

System.Web.Mvc.ModelError

タイプ「System.String」からタイプ「MyApp.Common.Models.ModelType」へのパラメーター変換は、タイプコンバーターがこれらのタイプ間で変換できないために失敗しました。」

これは、Kendo UIグリッドからのアクションにのみ影響するようです。通常のMVCアクション投稿は、アクションパラメーターの名前に関係なく機能します。

小さなテストモデルで新しいプロジェクトを作成し、この動作も再現することができました。

誰かがここで何が起こっているかに光を当てることができますか?

4

1 に答える 1

2

ほとんどの場合、現在の「ModelType」には「Model」という名前のプロパティが含まれており、デフォルトのMVCModelBinderは「Model」プロパティをモデル変数にバインドしようとします。変数名をアクションパラメーターから現在のモデルに含まれていないものに変更する必要があります。

于 2013-03-22T09:08:53.823 に答える