asp.net mvc ChildActionOnly 和ActionName的用法
ChildActionOnly的目的主要就是让这个Action不通过直接在地址栏输入地址来访问,而是需要通过RenderAction来调用它。
<a href="javascript:;" onclick="javascript:document.getElementById('show').style.display=''">
调用子操作</a>
<div id="show" >
<% Html.RenderAction("Test", "ChildTest"); %></div>
public ActionResult Index()
{
return View();
}
[ChildActionOnly]
public ActionResult Test()
{
return Content("Hello");
}
http://localhost:666/ChildTest/Test
如果直接这样访问Action的话就会报如下错误:
操作“Test”只能由子请求访问。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidOperationException: 操作“Test”只能由子请求访问。
从某种意义上来说也可以增强一定的安全性。
ActionName的意思就是为Action定义一个新的名称
[ActionName("NewTest")]
public ActionResult Test()
{
return Content("Hello");
}
如果是这样修改后,那么调用的时候就不是Test了,而是NewTest
<% Html.RenderAction("NewTest", "ChildTest"); %>
同名的时候不能重载(可以有一个Get,一个Post),
如:下面两个是可以允许的
public ActionResult ReadBook()
{
}
[HttpPost]
public ActionResult ReadBook(int id,int pageNum)
{
}
如果还要定义一样的话,可以通过自定义Action的名字的时候可以的
[ActionName("Index2")]
public ActionResult ReadBook(int n,int a,int b)
{
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)