动态更改数据类型的内容

时间:2018-02-28 10:45:59

标签: umbraco umbraco7

在我正在使用的 Razor 文件中:

<div>
    @Umbraco.Field("myText")
</div>

获取并显示myText属性的内容。 myText的实际内容是Textstring,是:

<a href="/main/somefile"> Hello </a>

我想要做的是在从Razor调用myText时动态更改href内部的路径。例如,我希望有时 Hello 超链接可以驱动到/main/somefile,有时可以驱动到/main/otherfile。这可能吗?怎么样?

2 个答案:

答案 0 :(得分:0)

如果没有为新文本创建新属性,则无法更改它,如果它位于同一文档中。

所以你必须制作更多属性,比如

@会将myText-1 会将myText @-2

等等。

答案 1 :(得分:0)

您的问题是缺少一些信息。我假设您想要根据某些条件更改链接?

我要做的只是将Umbraco中的输入文本更改为: <a href="{link}"> Hello </a>

然后我会在当前页面上获取属性的值,并根据条件将字符串{link}替换为应插入的任何链接,并将其保存在变量中。然后使用模板中替换的链接输出该变量。

如何从当前页面获取值:https://our.umbraco.org/documentation/reference/querying/ipublishedcontent/Properties#model-content-getpropertyvalue-string

另一种(更漂亮的)方法是创建一个包装此功能的Html帮助程序: https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions-1/views/creating-custom-html-helpers-cs#creating-html-helpers-with-static-methods

实施例: @{ var myText = Model.GetPropertyValue("myText").ToString(); if (something) { myText = myText.Replace("{link}", "somefile"); } else { myText = myText.Replace("{link}", "someotherfile"); } @myText }