热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

带有4个参数的Ajax.BeginForm没有找到action方法

如何解决《带有4个参数的Ajax.BeginForm没有找到action方法》经验,为你挑选了1个好方法。

我有一个奇怪的案例,我想要你的启蒙.我有两个控制器.一般人员控制器使用行动方法和一个候选人控制器,用于与候选人相关的更具体的行动方法.我使用位于Person文件夹下的一个局部视图,以便在以后我想将其用于其他类型的Person时用作通用.目前,此局部视图使用针对候选控制器的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中,它会再次正常工作.但是我想知道为什么会这样.我做了一些挖掘,但我没有设法得到答案.

从firebug我看到浏览器试图发布的URL是出于某种原因

HTTP:// {项目名} /人/ SaveCandidateLanguage长度= 9

代替

HTTP:// {项目名} /候选/ SaveCandidateLanguage长度= 9

我自然得到404未找到的回复.我还想知道变量是什么?我在网址末尾看到的长度= 9,它来自何处.



1> GGO..:

Ajax.BeginForm有11个不同的声明.在你的第一种情况下,它是有效的,因为你使用这个:

Ajax.BeginForm(string actionName, string controllerName, AjaxOptions options)

但是你使用这个的第二种情况,试图在object routeValues参数中放入一个字符串:

Ajax.BeginForm(string actionName, object routeValues, AjaxOptions options, object htmlAttributes)

最后,您要使用的声明是:

Ajax.BeginForm(string actionName, string controllerName, object routeValues, AjaxOptions ajaxOptions, object htmlAttributes)

使用null值实现,例如:

Ajax.BeginForm("SaveCandidateLanguage", "Candidate", null,
new AjaxOptions
{
    HttpMethod = "Post",
    OnBegin= "onBeginFormValidation",
    OnSuccess= "onSaveCandidateLanguageSuccess"
},
new
{
    id = "addEditCandidateLanguageForm",
    novalidate = "novalidate"
}))

原因?length="9"是"Candidate"包含9个字符,length是字符串的唯一属性


而'?length ="9"`的原因是因为"Candidate"包含9个字符而``length`是`string`的唯一属性
推荐阅读
author-avatar
机加工N_918
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有