我有一个位于部分 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/