我有一個奇怪的案例,我想要你的啓示。 我有兩個控制器。用於一般人員的一個人控制器使用動作方法,並且一個候選人控制器用於與候選人相關的更具體的動作方法。 我使用位於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方法。如果我把我的行動放在人員控制器中,它會再次正常工作。然而我想知道爲什麼是這種情況。我做了一些挖掘,但我沒有設法得到答案。
從螢火我看到瀏覽器嘗試文章的網址是出於某種原因HTTP
:// {}項目名/人/ SaveCandidateLanguage長度
= 9
而不是http :// {ProjectName}/Candidate/SaveCandidateLanguage?Length = 9
自然我得到了一個404找不到響應。我也想知道什麼是變量?長度= 9,我看到在網址的結尾,它從哪裏來。
的唯一屬性和'什麼原因呢?長度=「9」'是因爲「候選人」包括9個字符和'長度'是'string'的唯一屬性。 –
謝謝你的回答!現在它是有道理的。 :)從我看到的第二種方法只是一件事可能是Ajax.BeginForm(字符串actionName,字符串控制器,對象routeValues,AjaxOptions選項,對象htmlAttributes)對嗎?爲了澄清答案。再次感謝你。 –