我使用CustomForms模块创建了一个表单,需要控制我在表单中包含的输入字段的标记(以添加引导程序特定的类)。我在/Views/EditorTemplates/Fields/Input.Edit.cshtml
位置为我的主题添加了一个视图,这使我可以更新输入字段的标记。
我的问题是我的主题中的视图也在管理视图中被选中。我没想到这种行为,但它正在发生。我尝试使用备用命名约定将视图覆盖范围限定为url(Input.Edit-url-contact.cshtml
)和内容类型(Input.Edit-ContactRequest.cshtml
),但在这种情况下它们似乎不起作用。
有没有办法在我的主题中调整Input.Edit.cshtml视图的范围,以便它只适用于网站的前端?或者有更好的方法来实现我想要做的事情吗?
答案 0 :(得分:3)
我最后通过实现一个形状表提供程序(基于Bertrand的建议)来解决这个问题,以便在我的主题中指定不同的模板名称,以便它们不会在管理员中被选中。这是它的样子:
public class EditorFieldShapeProvider : IShapeTableProvider
{
public void Discover(ShapeTableBuilder builder)
{
builder.Describe("EditorTemplate")
.OnDisplaying(displaying =>
{
var shape = displaying.Shape;
if (shape.ContentField is InputField) {
shape.TemplateName = "CustomInputField";
}
});
}
}
只需将该类放在主题中的某个位置,然后在/ThemeName/Views/EditorTemplates/CustomInputField.cshtml中创建视图