我需要能够在控制器上的操作中构造一个链接来发送邮箱.这样做的最佳实践是什么?我不想自己建造它,以防我的路由改变.

我是否应该查看每封邮箱,并将其呈现和发送?这可能是一个很好的方法.

推荐答案

如果您只想获得某个操作的路径,请使用UrlHelper:

UrlHelper u = new UrlHelper(this.ControllerContext.RequestContext);
string url = u.Action("About", "Home", null);

如果要创建超链接,请执行以下操作:

string link = HtmlHelper.GenerateLink(this.ControllerContext.RequestContext, System.Web.Routing.RouteTable.Routes, "My link", "Root", "About", "Home", null, null);

Intellisense将为您提供每个参数的含义.


Update from comments:控制器已具有UrlHelper:

string url = this.Url.Action("About", "Home", null); 

Asp.net相关问答推荐

内容根路径在 .NET 6 中如何工作?

如何在现有数据库中创建 ASP.Net Identity 表?

web.config 部分的单独配置文件

如何在asp.net中单击按钮的新选项卡中打开页面?

带有模型的 mvc 上传文件 - 第二个参数发布的文件为空

如何在 GridView 单元格中的(即
)中呈现解码的 HTML

IIS 将旧用户名返回到我的应用程序

为什么默认情况下不允许 GET 请求返回 JSON?

使用 Lucene.NET 索引 .PDF、.XLS、.DOC、.PPT

N' 在 SQL 脚本中代表什么? (插入脚本中字符之前使用的那个)

Web Api 请求内容在操作过滤器中为空

没有回发的按钮?

带有邮箱地址参数的 WebApi 方法从 HttpClient 返回 404

尽管安装了 AspNetCoreModule,但在 IIS 中运行 ASP.NET Core 应用程序时出现 0x8007000d 错误 500.19

如何在 ASP.NET Core Web API 中配置 JSON 格式的缩进

如何获取当前登录用户的角色列表

要调用此方法,Membership.Provider属性必须是ExtendedMembershipProvider的实例

如何将参数传递给 ASP.NET MVC 2 中的自定义 ActionFilter?

获取 Application_Start 中的当前应用程序物理路径

如何在asp.net的GridView中按列名而不是按索引获取单元格值