如何在 taghelper process 方法中获取整个视图模型?

Y.Y*_*.Y. 5 tag-helpers asp.net-core asp.net-core-tag-helpers

是否可以在标签帮助器 Process 方法(.NET Core MVC)中获取整个视图模型?

Chr*_*att 2

传递给标签助手的所有内容都是通过属性完成的。如果你想要整个视图模型,那么你只需这样做:

<mytag model="@Model" />
Run Code Online (Sandbox Code Playgroud)

然后你需要标签助手上的一个属性来将其绑定到类似:

public MyViewModel Model { get; set; }
Run Code Online (Sandbox Code Playgroud)

属性的名称与属性的名称相对应。这里的“模型”没有什么特别的。

然而,它的效用将是有限的。标签助手旨在具有一定的通用性。这就是重点:封装可重用的逻辑。如果将其绑定到特定的视图模型类(基于属性),那么它将适用于该特定的视图模型。使其更通用的唯一方法是使用基类或将其直接键入为object,以便可以传递任何内容。但是,对于基类,1)您需要让每个视图模型都继承自该基类,2)即使如此,您也只能使用基类上的属性。使用object,您实际上无法引用任何属性,除非您首先将其向下转换为特定的视图模型类。虽然这将允许您处理任何场景,但原则上,您将被迫在标签助手中使用长块switch或语句来有条件地处理不同的场景。if

总而言之,出于多种原因,通过整个模型并不是一个好主意。标签助手应该有一个特定的目的,并且您应该只传递它特别需要的东西,这也允许您明确这些需求。

如果您正在寻找处理整个模型的东西,您更有可能寻找部分视图或视图组件,而不是标签助手。