私はまだMVCに非常に慣れていないので、この問題を回避する最善の方法を見つけるのに苦労しています。
"Create" (GET)
オプションのパラメーター(ドロップダウンリストのデフォルト値)をとる自動足場アクションの修正バージョンがあります。"Create" (HTTPPost)
次に、そのフォームをアクションに送信します。
public ActionResult Create(string id = null)
{
//use id to pick a default item in a drop down list.
}
[HttpPost]
public ActionResult Create(Registration registration)
{
//this method doesn't care one iota what was passed to the GET method
// but registration.id is invalid because it's trying to set it to the value that was passed to the get method. If id in the get method is not passed, then everything is fine
}
問題は、値がGET createアクションに渡された場合、GETアクションに渡された値をPOSTアクションのモデルの主キー(Id)フィールドに詰め込もうとしているためModelState.isValid
、アクションでfalseになることです。 POST create
(自動生成されるため、省略してください。
主キーの列名をId以外に変更できることはわかっていますが、データベースを制御できず、この問題に対する別の解決策を見つけようとしています。
GETアクションのパラメーターの名前を「id」から別の名前に変更しようとすると、リンクをからに変更する必要がありますが、変更し CREATE/paramValue
たくCREATE/?paramName=paramValue
ありません。(それが唯一の簡単な方法であるなら私はそうしますが)。
POSTアクションがGETアクションに渡された値を無視するようにする方法はありますか?