asp.net-mvc – 从控制器内部使用Html.ActionLink和Url.Action(
我想写一个
HtmlHelper来渲染具有预设值的ActionLink,例如.
<%=Html.PageLink("Page 1","page-slug");%> 其中PageLink是使用已知的Action和Controller调用ActionLink的函数,例如. “索引”和“页面”. 由于HtmlHelper和UrlHelper不存在于Controller或类中,如何从类中获取相对URL? 更新:鉴于现在我已经有了三年累积的经验,这里是我的建议:只需使用Html.ActionLink(“我的链接”,新的{controller =“Page”,slug =“page-slug”}) <a href="@Url.Action("ViewPage",new { controller = "Page",slug = "my-page-slug" })">My Link</a> 您的扩展方法可能是可爱和简短的,但它增加了另一个未经测试的故障点和新的学习要求,而不增加任何真正的价值.认为它是设计一个复杂的系统.为什么添加另一个移动部分,除非它增加可靠性(否),可读性(很少,一旦你阅读更多的文档),速度(无)或并发(无). 解决方法
不知道我真的明白你的问题,但是让我试试看.
要创建一个像您描述的HtmlHelper扩展,请尝试以下操作: using System; using System.Web.Mvc; using System.Web.Mvc.Html; namespace Something { public static class PageLinkHelper { public static string PageLink( this HtmlHelper helper,string linkText,string actionName,string controllerName,object routeValues,object htmlAttributes) { return helper.ActionLink( linkText,actionName,controllerName,routeValues,htmlAttributes); } } } 关于从类中获取URL的问题,取决于你将实现什么样的类.例如,如果要从HtmlHelper扩展名获取当前控制器和操作,可以使用: string currentControllerName = (string)helper.ViewContext .RouteData.Values["controller"]; string currentActionName = (string)helper.ViewContext .RouteData.Values["action"]; 如果要从控制器获取它,可以使用基类(Controller)中的属性/方法来构建URL.例如: var url = new UrlHelper(this.ControllerContext.RequestContext); url.Action(an_action_name,route_values); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – HTMLHelper,从属性中生成“Expression> exp
- 在ASP.NET中导入一个类
- asp.net-core-mvc-2.0 – ASP .NET Core 2 MVC错误NU1202在
- asp.net-web-api – 找不到Web API路由404
- asp.net – 无法完成操作.提供的SqlConnection不指定初始目
- asp.net-mvc-3 – asp.net mvc3请求线程亲和
- asp.net-mvc – 仅从路由数据生成URL
- asp.net-mvc – EF上下文管理
- 使用ASP.NET Core进行Ws-Federation身份验证
- asp.net-mvc – IIS7 ASP.NET MVC客户端缓存标头不起作用
- .net – CQRS EventSourcing可扩展性
- 剃刀 – 输入隐藏显示不正确的ID(Guid.Empty)
- asp.net – 有没有一个原因,cshtml不受欢迎
- asp.net – 如何处理从“DBNull”类型到“String
- 我可以使用ASP.NET获得“WAR文件”类型部署吗?
- 在asp.net webforms中使用jquery调用webmethod
- asp.net – 我们如何在共享工作环境中使用版本控
- asp.net – 仅在本地IIS服务器上支持创建虚拟目录
- asp.net-mvc – 如何将Ninject与HttpClient一起使
- asp.net-mvc – Java是否与ASP.NET MVC的示例站点