我需要调用一些控制器/操作方法或至少调用我自己的帮助方法,这些方法将使用会话变量。我如何从 TagHelper 的 Process 方法中执行此操作
问问题
915 次
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 回答