c# ajax.beginform,c# – Ajax.BeginForm,有4个参数没有找到action方法

我有一个奇怪的案例,我想要你的启蒙.

我有两个控制器.一般人员控制器使用行动方法和一个候选人控制器,用于与候选人相关的更具体的行动方法.

我使用位于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,它来自何处.

解决方法:

Ajax.BeginForm有11个不同的声明.

在你的第一种情况下,它是有效的,因为你使用这个:

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

但是你使用这个的第二种情况,试图在对象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是string的唯一属性

标签:c,asp-net-mvc,razor,html-helper,ajax-beginform

来源: https://codeday.me/bug/20190527/1163198.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值