gpt4 book ai didi

c# - 从 MVC 2.0 中的静态上下文访问 System.Web.Routing.RequestContext

转载 作者:太空狗 更新时间:2023-10-29 20:45:07 25 4
gpt4 key购买 nike

我需要在 View 模型中使用 System.Web.Routing.RequestContext 才能调用 HtmlHelper.GenerateLink()

在 MVC 1.0 中,可以通过强制转换当前的 IHttpHandler 来静态获取上下文:

 var context = ((MvcHandler) HttpContext.Current.CurrentHandler).RequestContext;

现在项目已经升级到MVC 2.0,抛出这个异常:

Unable to cast object of type 'ServerExecuteHttpHandlerWrapper' to type 'System.Web.Mvc.MvcHandler'.

我不确定它是否相关,但这是在 IIS6 上的 .NET 4.0 中运行的。

最佳答案

I need to use System.Web.Routing.RequestContext in a view model in order to call HtmlHelper.GenerateLink().

虽然理论上你可以这样写:

var rc = HttpContext.Current.Request.RequestContext;

在实践中,你绝对不应该在 View 模型中做这样的事情。这就是 HTML 助手应该做的:

public static MvcHtmlString GenerateMyLink<MyViewModel>(this HtmlHelper<MyViewModel> html)
{
MyViewModel model = html.ViewData.Model;
RequestContext rc = html.ViewContext.RequestContext;
//TODO: use your view model and the HttpContext to generate whatever link is needed
...
}

并在您的强类型 MyViewModel View 中简单地:

<%= Html.GenerateMyLink() %>

关于c# - 从 MVC 2.0 中的静态上下文访问 System.Web.Routing.RequestContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6136598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com