2
asp.netコアMVC HTMLヘルパー静的メソッドでHTMLヘルパーコンテキストからurlHelperを取得する方法を静的メソッド私はHtmlHelperのでHtmlHelperのコンテキストからurlHelperを取得するために使用私は<code>ASP.NET 5 RC1</code>でプロジェクトを持っている
public static IHtmlContent MyHtmlHelperMethod<TModel, TResult>(
this IHtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TResult>> expression)
{
//get the context from the htmlhelper and use it to get the urlHelper as it isn't passed to the method from the view
var urlHelper = GetContext(htmlHelper).RequestServices.GetRequiredService<IUrlHelper>();
var controller = htmlHelper.ViewContext.RouteData.Values["controller"].ToString();
string myLink;
if (htmlHelper.ViewContext.RouteData.Values["area"] == null)
{
myLink= urlHelper.Action("index", controller);
} else
{
string area = htmlHelper.ViewContext.RouteData.Values["area"].ToString();
myLink = urlHelper.Action("index", controller, new { area = area });
}
string output = "<div><a href = \"" + myLink + "\" class=\"myclass\"><blabla></blabla>My Link</a></div>;
return new HtmlString(output.ToString());
}
しかしASP.NET Core
で、それはもはや作品と私はthis stackoverflowの答えに投稿されたソリューションは、しかし、私は私に呼び出す静的HTMLヘルパー・メソッドを使用しています、IUrlHelperFactory
を注入することであるランタイムエラーに
>InvalidOperationException: No service for type 'Microsoft.AspNetCore.Mvc.IUrlHelper' has been registered.
を取得cshtml
であり、タグヘルパーで使用されるクラスではありません。
ASP.net Core
でコードを変更するにはどうすればよいですか?
おかげで、私はそれは美しいではないと言うようになったと私はこの少し楽にするためにasp.netのコア開発者のように持っています – Yepeekai