gpt4 book ai didi

jquery - 如何使用 jQuery 调用 MVC ChildActionOnly Controller 操作

转载 作者:行者123 更新时间:2023-12-03 22:29:58 24 4
gpt4 key购买 nike

我有一个位于部分 View 中的 DropDownListFor。更改时它会触发 jQuery 脚本,但 Fiddler 显示 HTTP 500 错误:

The action 'LanguageListPartial' is accessible only by a child request.

调用脚本:

<script type="text/javascript">
$(function () {
$('#SelectedLanguage').on('change', function () {
var culture = $(this).val();
$('#test').load("/Account/LanguageListPartial/" + culture, function () {
location.reload(true);
});
});
});
</script>

我不希望直接调用 Controller 操作,因此它用 [ChildActionOnly] 装饰。我意识到它是直接用 jQuery .load() 调用的。

有没有办法保留 ChildActionOnly 限制,并仍然通过 .on('change' ...) 事件从 jQuery 调用它?

最佳答案

首先:创建一个支持 ChildActionOnly 和 Ajax 功能的自定义属性:

public class AjaxChildActionOnlyAttribute : ActionMethodSelectorAttribute
{
public override bool IsValidForRequest(ControllerContext controllerContext, System.Reflection.MethodInfo methodInfo)
{
return controllerContext.RequestContext.HttpContext.Request.IsAjaxRequest() || controllerContext.IsChildAction;
}
}

然后:将上面创建的属性用于您的部分 View :

[AjaxChildActionOnly]
public PartialViewResult LanguageListPartial(string id)
{
//Function Logic
}

关于jquery - 如何使用 jQuery 调用 MVC ChildActionOnly Controller 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24443531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com