【问题标题】:Redirecting to Action Result Using Href Attribute使用 Href 属性重定向到操作结果
【发布时间】:2017-11-20 08:11:09
【问题描述】:

我正在尝试从锚标记调用操作结果,

我正在将 html 构建到 C# 中,它不在视图中,并像这样使用 html 助手 @Html.Raw(Model.HTML) 将其注入到视图中。

HTML 是

html.AppendLine("<td><a href='Home/DeleteFile?ID="+ dt.Rows[i]["ID"].ToString() + "'><i style='color:#e90029' class='fa fa-times fa-lg' aria-hidden='true'></i></a></td>");

问题是当我第一次单击此锚标记以删除它通过调用地址起作用的记录时

http://WebsiteAlias/Home/DeleteFile?ID=2

但在那之后,当我将鼠标悬停到另一条记录以删除它们时,它会显示 URL

http://WebsiteAlias/Home/Home/DeleteFile?ID=2

它在 url 中添加另一个 /Home ,

为什么会这样?

我不能使用 @Url.Action("Action","Controller") 因为 HTML 来自 c#

【问题讨论】:

  • 这是你想要的吗:&lt;a href='/Home/DeleteFile?ID="+ dt.Rows[i]["ID"].ToString() + "'&gt;?
  • 可以在控制器中使用Url.Action()生成正确的url
  • 如果你想使用 HTML 助手,这篇文章已经做到了:stackoverflow.com/questions/699782/…。
  • @TetsuyaYamamoto 是的,这就是我想要的,但效果不好
  • 是 - Url.Action() 输出一个字符串,因此您可以使用 yourStringBuilder.Append(Url.Action(....));

标签: c# html asp.net-mvc


【解决方案1】:

如果构建 HTML 的 C# 代码可以访问 HttpContext,您可以像这样创建 UrlHelper:

using System.Web;

var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
string url = urlHelper.Action("DeleteFile", "Home", new { ID = dt.Rows[i]["ID"].ToString() });
return url;

编辑:如果你只有HttpContextBase的访问权限,你可以像这样获取当前的HttpContext:

HttpContextBase contextBase;
HttpContext httpContext = contextBase.ApplicationInstance.Context;

【讨论】:

  • 错误:HttpContextBase' 不包含 'Current' 的定义。需要添加哪个参考?
  • using System.Web; HttpContext 应该在 MVC 控制器、ViewModels、Views、Global.asax 中可用……也许你必须将它传递给构建 HTML 的类。
  • 另请参阅我对如何从HttpContextBase 获取HttpContext 的编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-17
  • 2021-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多