gpt4 book ai didi

asp.net-mvc - Html.Action 不呈现使用 [HttpPost] 注释的操作方法

转载 作者:行者123 更新时间:2023-12-05 00:36:00 27 4
gpt4 key购买 nike

我的 Controller 上有以下方法:

  [HttpPost]
public ActionResult UnplannedCourses(int studentId)
{
var model = CreateUnplannedCourseModel(studentId);
return View("UnplannedCourses", model);
}

在我看来,我尝试:
  <div class="unplannedcourses">
@Html.Action("UnplannedCourses", "Student", new { studentId = Model.StudentId })
</div>

但这给出了一个错误:在 Controller “Digidos.MVCUI.Controllers.StudentController”上找不到公共(public)操作方法“UnplannedCourses”。

如果我离开 [HttpPost]出来,然后它就可以工作了,但是我稍后再次从 javascript 使用该操作,所以我希望只有 POST 可用。

有什么想法吗?

最佳答案

我认为我最好的选择是基于 MVC 来源的新属性:

public class ChildishAttribute : ActionMethodSelectorAttribute
{
private static readonly AcceptVerbsAttribute _innerAttribute = new AcceptVerbsAttribute(HttpVerbs.Post);
public override bool IsValidForRequest(ControllerContext controllerContext, System.Reflection.MethodInfo methodInfo)
{
var isPost = _innerAttribute.IsValidForRequest(controllerContext, methodInfo);
var isChildAction = controllerContext.IsChildAction;
var isAjax = controllerContext.RequestContext.HttpContext.Request.IsAjaxRequest();

return isChildAction || (isAjax && isPost);
}
}

[Childish]
public ActionResult UnplannedCourses(int studentId)
{
var model = CreateUnplannedCourseModel(studentId);
return View("UnplannedCourses", model);
}

关于asp.net-mvc - Html.Action 不呈现使用 [HttpPost] 注释的操作方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8756120/

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