我需要从服务器端解析一些HTML。所以我已经使用了
@Html.Raw(MyFunction("key"))
MyFunction
返回以下值
<!--some HTML -->
<li>
Please click the link here to see the <a href='@(MySiteSettings.DocumentURL + "Documents/MyPDFFile.pdf")' target="_blank">Changes to Your Screens</a>.
</li>
<!--some other HTML -->
我希望将锚标记呈现为,
<a href='http://mydocumenturl/Documents/MyPDFFile.pdf' target="_blank">Changes to Your Screens</a>
但它的呈现方式如下所示。
<a href='http://mycurrenturl/@(MySiteSettings.DocumentURL + "Documents/MyPDFFile.pdf")' target="_blank">Changes to Your Screens</a>
我已经尝试了
@@(MySiteSettings...
,
@:(MySiteSettings...
和
@:@@(MySiteSettings ...
逃避&#39; @&#39;在Html.Raw
,但没有运气。
答案 0 :(得分:1)
@Html.Raw正在执行它的设计目标:此方法使用IHtmlString类包装HTML标记,该类呈现未编码的HTML 。我现在没有视觉工作室,所以请将此作为样本并相应更新
根据您的代码,我建议您使用PartialViews
@Html.RenderAction("PartialList");
[OutputCache(Duration = 60, VaryByParam = "None")]
public ActionResult PartialList()
{
...
//form up your dynamic <a> here...
return PartialView(<pass in your string here>);
...
}
@Html.Raw(Model)
<li>
Please click the link here to see the <a href='@Model)' target="_blank">Changes to Your Screens</a>.
</li>
然后你可能会问,为什么你要经历所有这些麻烦?看看this 在那个答案中没有提到的是你可以轻松利用的OutputCache。
答案 1 :(得分:1)
像这样定义你的功能:
@helper MyFunction(string key)
{
// do your code here, also with @expressions
<li>
Please click the link here to see the <a href='@(MySiteSettings.DocumentURL + "Documents/MyPDFFile.pdf")' target="_blank">Changes to Your Screens</a>.
</li>
}
答案 2 :(得分:0)
我提出了这个解决方案。
@Html.Raw(string.Format(MyFunction("key"), MySiteSettings.DocumentURL + "Documents/MyPDFFile.pdf"))
我替换了我的数据库中的内容,如上所述。
<!--some HTML -->
<li>
Please click the link here to see the <a href='{0}' target="_blank">Changes to Your Screens</a>.
</li>
<!--some other HTML -->