【问题标题】:Get root part of link [duplicate]获取链接的根部分[重复]
【发布时间】:2013-10-25 08:01:55
【问题描述】:

我的控制器中的一个方法返回一个视图,其链接类似于http://localhost:17000/Questionnaire/CompleteQuestionnaire?GuidToken=4815823D-3BFF-487D-AEB0-BB874AE9FBDE
其他方法只返回链接,如/Questionnaire/CompleteQuestionnaire?GuidToken=4815823D-3BFF-487D-AEB0-BB874AE9FBDE

[HttpGet]
    public JsonResult ShowUrlQuestionnaire(int id)
    {
        var questionnaire = QuestionnaireRepository.GetById(id);
        var questionnaireUrl = "/Questionnaire/CompleteQuestionnaire?GuidToken=" + questionnaire.QuestionnaireId.ToString();
        return Json(questionnaireUrl, "text/html", System.Text.Encoding.UTF8,
                    JsonRequestBehavior.AllowGet);
    }

如何在 var questionnaireUrl 中添加链接的根部分?

我尝试在控制器中添加此方法

private string GetBaseUrl()
    {
        var request = HttpContext.Current.Request;
        var appUrl = HttpRuntime.AppDomainAppVirtualPath;

        if (!string.IsNullOrWhiteSpace(appUrl)) appUrl += "/";

        var baseUrl = string.Format("{0}://{1}{2}", request.Url.Scheme, request.Url.Authority, appUrl);

        return baseUrl;
    }

但我得到了错误
Error 1 'System.Web.HttpContextBase' does not contain a definition for 'Current' and no extension method 'Current' accepting a first argument of type 'System.Web.HttpContextBase' could be found (are you missing a using directive or an assembly reference?) 如何解决?

【问题讨论】:

  • 我认为您向我们展示的代码中不会出现错误。你在某处使用类似HttpContextBase.Current 的东西吗?以QuestionnaireRepository.GetById 为例。
  • @CodeCaster 非常感谢您的链接,我写了var request = System.Web.HttpContext.Current.Request;,现在它可以工作了。
  • 您需要将其添加为您自己问题的答案并将其标记为。

标签: asp.net-mvc-4


【解决方案1】:

我在这里找到了解决方案How can you get the “real” HttpContext within an ASP.NET MVC application?
我改变了我的代码

var request = System.Web.HttpContext.Current.Request;

现在它可以工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 2017-10-23
    相关资源
    最近更新 更多