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 – 查找和删除孤立的网页,图像和其他相关文件
- Asp.net C的PDF或其他“报告查看器”选项#
- asp-classic – 检索ADO Recordset字段名称(经典ASP)
- 如何使用asp.net webapi获取Json Post Values
- 从ASP.NET MVC应用程序中的Amazon SES发送电子邮件
- asp.net-mvc – ASP.NET MVC验证的唯一性
- asp.net-mvc – 更改数据注释中的验证消息
- asp.net-mvc – 使用SharpDevelop构建ASP.NET MVC应用程序的
- asp.net-mvc – ViewBag和ViewData也是asp.net mvc中状态管
- asp.net-mvc – 如何在剃刀中获取页面原点?
- asp.net-mvc-5 – 如何在没有数据库的情况下使用
- asp.net-mvc – ASP.NET MVC:正确的地方为部分视
- asp.net-mvc – 如何获取针对Razor View Engine的
- asp.net – 脚本管理器控件实际上是做什么的?
- asp.net – 为什么Visual Studio会拒绝访问,尝试
- asp.net – ReportViewer阻止其他功能,直到报告查
- asp.net-mvc-4 – MVC4 MEF插件和控制器命名空间
- asp.net – GridView中的TemplateField标题
- asp.net – MasterPage是否知道正在显示的页面?
- asp.net-mvc – 使用ASP.NET MVC设置路由{tenant
