2

我需要调用一些控制器/操作方法或至少调用我自己的帮助方法,这些方法将使用会话变量。我如何从 TagHelper 的 Process 方法中执行此操作

4

1 回答 1

3

ViewContextAttribute将提供对上下文(对象等)的访问,这些上下文也可用于 Tag Helper 内的视图。

在您的标签助手类中,添加:

[ViewContext]
public ViewContext ViewContext { get; set; }

...然后,您可以创建属性以在标签助手的其余部分中使用以获取特定资源,例如:

protected HttpRequest Request => ViewContext.HttpContext.Request;
protected HttpResponse Response => ViewContext.HttpContext.Response;
protected ISession Session => ViewContext.HttpContext.Session;
protected ITempDataDictionary TempData => ViewContext.TempData;

然后在您的 Process 方法中使用它们:

就我而言,我需要在父(封闭)标签助手和子(封闭)标签助手之间传递值。我本可以创建一个自定义对象并注入到两者中,但由于我将其放入 NuGet 包的可能性很小,我不想让我的用户负担在他们的 startup.cs 中设置这个 DI。

所以,我在父 Tag Helper 的 Process() 方法中添加了这个:

TempData.Set("Test", "Passed the test!");

...然后在子标签助手中添加了这个:

object result;
if (TempData.TryGetValue("Test", out result))
{
  string success = result.ToString();
}

......它奏效了。我使用了 TempData,但它取决于 Session。你可以用 Session 做同样的事情。

于 2016-09-21T11:15:43.230 回答