通过asp.net MVC中的System.Net WebClient请求页面内容

时间:2012-08-13 16:04:04

标签: asp.net-mvc-3 umbraco

Umbraco ver。 4.7

我的项目与asp.net MVC 4一起运行。我有一个Umbraco页面,它在文档类型上有一个富文本编辑器属性,它将保留带有HTML的文本正文。

有没有办法使用System.Net.WebClient客户端,并从我的MVC项目中请求Umbraco页面并让它将该页面的document属性的内容返回给MVC控制器的WebClient请求?

奖金问题:

有没有办法在模板中设置一个Umbraco宏来解析查询字符串参数,并在Umbraco模板中有占位符,宏将在内容返回请求之前用解析出的查询字符串params替换占位符(上面解释过)?

2 个答案:

答案 0 :(得分:1)

在MVC4项目中添加对umbraco.dll和umbraco.MacroEngines.dll的引用。

然后你应该能够(在你的控制器或视图中):

dynamic d = new DynamicNode(nodeId);
return d.AliasOfRichTextProperty

答案 1 :(得分:1)

您是否在Umbraco中使用了/Base扩展名?我相信这可能会帮助你,因为我有类似的要求,发现/ Base非常强大。在我的文档类型中,我实际上使用多行文本框作为html的输入(或者在我的案例中使用Razor脚本)。在my / Base类中,我创建了一个方法,用于查找正确的节点,从文本框中获取原始脚本,将脚本呈现为原始html字符串,然后返回包含在标记中的字符串。

public static string GetRazor()
    {
        var doc = new DynamicNode(nodeId);

        string razorScript = doc.GetPropertyValue("{propertyAlias}");
        string razorString = RenderRazor.RenderRazorScriptString(razorScript, nodeId);            

        return razorString;
    }

另一种方法是在Umbraco中创建一个模板可以调用的宏,例如:

   @using umbraco.MacroEngines
   @{
       dynamic node = @Model;
       string htmlString = node.GetPropertyValue("{propertyAlias}");
       @Html.Raw(htmlString)
    }

然后在模板中,您只需要注入宏:

<umbraco:Macro Alias="{RazorAlias}" runat="server"></umbraco:Macro>

你的文本框中的html将由剃刀引擎呈现!

-Dan