私は奇妙なケースがあり、あなたの啓発が欲しかった。 私は2つのコントローラを持っています。一般的なPerson使用のアクション・メソッドのための1人のコントローラと、候補に関連するより具体的なアクション・メソッドのための1つの候補コントローラ。 Personフォルダの下にある部分ビューを使用して、将来他のタイプのPersonで使用する場合に備えて汎用として使用します。 当分の間、この部分図は、候補コントローラをターゲットとするAjax.BeginFormを使用しています。私が使っている構文は4つの引数を持つAjax.BeginFormがアクションメソッドを見つけられない
@using (Ajax.BeginForm("SaveCandidateLanguage", "Candidate",
new AjaxOptions
{
HttpMethod = "Post",
OnBegin = "onBeginFormValidation",
OnSuccess = "onSaveCandidateLanguageSuccess"
}))
{
// form input elements
}
あるAjax.BeginFormのこのタイプは、それが別のコントローラ内のアクションをターゲットにしているという事実にもかかわらず正常に動作します。 フォームの検証のために、私はAjax.BeginFormにさらに引数をつける必要がありました。私の新しい構文は次のようなものです:
@using (Ajax.BeginForm("SaveCandidateLanguage", "Candidate",
new AjaxOptions
{
HttpMethod = "Post",
OnBegin = "onBeginFormValidation",
OnSuccess = "onSaveCandidateLanguageSuccess"
},
new
{
id = "addEditCandidateLanguageForm",
novalidate = "novalidate"
}))
{
// form input elements
}
何らかの理由で、この方法ではActionメソッドが見つかりません。私のアクションをPerson Controllerの中に入れたら、正しく動作します。しかし、私はなぜそのようなのだろうと思っていた。私はいくつかの掘り出し物をしましたが、私はそれについての答えを得ることはできませんでした。 ?// {プロジェクト名} /人/ SaveCandidateLanguage長= 9
代わり
ののhttp:放火犯から
私はブラウザが投稿しようとするURLが何らかの理由
HTTPのためであることがわかり:// {ProjectName} /候補/ SaveCandidateLanguage?Length = 9
自然に私は404 Not foundという応答を得ました。私はまた、変数は何ですか?私はURLの最後に表示される長さ= 9、それはどこから来るのだろうかと思っていた。
の唯一の財産であり、「候補」は9つの文字が含まれているため、 '?長=「9」の理由は' 'length'は' string'の唯一のプロパティです –
答えをありがとう!今それは理にかなっています。 :)私は2番目の方法を見たものからちょうど1つはおそらくAjax.BeginForm(string actionName、文字列コントローラ、オブジェクトrouteValues、AjaxOptionsオプション、オブジェクトhtmlAttributes)ですか?答えの明確化のために。ありがとうございました。 –