【问题标题】:Request page content through System.Net WebClient in asp.net MVCasp.net MVC中通过System.Net WebClient请求页面内容
【发布时间】:2012-08-13 16:04:03
【问题描述】:

Umbraco 版本。 4.7

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

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

额外问题:

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

【问题讨论】:

  • 也许我没有正确理解这个问题,但是在 MVC 项目中包含 Umbraco DLL 并通过 Umbraco API 访问内容不是更简单吗?
  • 好吧,我不精通 Umbraco,而且我没有设置 MVC/Umbraco 项目 - 一些 umbraco dll 包含在内,而一些 Umbraco 没有。也许是你在想的一个例子?有时,当您不知道什么是可能的时,很难知道您的选择。

标签: asp.net-mvc-3 umbraco


【解决方案1】:

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

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 都将由 razor 引擎呈现!

-丹

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-09
      • 1970-01-01
      • 2011-02-28
      相关资源
      最近更新 更多