c# - 跳过单一方法的所有 Umbraco 魔法

标签 c# asp.net-mvc umbraco

我刚刚被分配在使用 Umbraco 的项目中实现一项功能。我的工作基本上是生成特定的 XML 并将其返回给用户。但是我无法让它工作,因为当我创建新 Controller 时(我尝试创建

Controller, RenderMvcController and SurfaceController

)和其中的方法(如果我只是在现有 Controller 中创建新方法),我在浏览器中输入 url 后收到错误 404。示例:我在其中创建 TestController 和方法 Index 。我尝试过组合,其中 TestController 派生自 RenderMvcController 或 SurfaceController 或只是 Controller。编译后等当我运行时

http://my_address/Test 

http://my_address/Test/Index

我从 umbraco 收到 404 错误。我查看了 umbraco 中已经存在于项目中的其他页面,它们也都在 umbraco Web 面板中以某种方式进行了配置:

http://my_address/umbraco

我也尝试向现有 Controller 添加新方法,但没有成功(再次出现 404 错误)。我从未使用过 umbraco,也不知道如何配置它。我只是想知道是否有任何方法可以创建可在以下位置访问的方法:

http://my_address/MyMethod

http://my_address/MyController/MyMethod

并且将准确地返回我将在现有的 Umbraco 项目中对其进行编程的内容(没有任何 View 、部分 View 等 - 我可以手动设置标题和内容类型,并且我的内容是纯文本),而无需处理 umbraco管理面板?

感谢您的帮助:)

//编辑

我的想法正式被打破了......我的 react 取决于文化(我的意思是我根据国家/地区从数据库中提取不同的数据),但它并不像

那么简单
CurrentCulture.CultureInfo

Umbraco 配置为根据域名扩展返回不同的文化(德国为 .de、英国为 .co.uk、丹麦为 .dk - 这只是 umbraco 管理面板中的手动配置,将不同的文化信息和 View 分配给不同的主机名)。常规 Controller 从以下位置获取这种修改后的文化

RenderModel.CurrentCulture

作为参数传递给 Controller ​​的方法。有没有一种方法可以创建不分配布局/模型的 umbraco Controller /方法/事物(这样我就可以显示从外部服务接收的纯 XML 数据)并且仍然可以访问 umbraco 的 RenderModel 文化?我想要创建的是如果用户输入 url:

http://my_address.de/myController/myMethod

我的 Controller 将获取当前区域性,调用将区域性作为参数传递的外部服务,并显示接收到的数据,而不将其包装在任何 View 中。示例:

public class myController : SomeBaseUmbracoControllerOrsomething
{
    public string/XmlDocument/ActionResult myMethod(RenderModel model)
    {
        int countryId = myFunctionToTranslateCultureToCountryId(model.CurrentCulture);
        return MethodThatCallsExternalServiceAndReturnsXml(countryId);
    }
}

很抱歉造成困惑,但我刚刚才了解了国家/地区的整个困惑情况......

最佳答案

您不想使用

  • Controller ,因为 umbraco 路由进程没有拾取它
  • 你不想使用RenderMvcController,因为这太过分了
  • 您不想使用 Surfacecontroller,因为您没有使用子操作或表单。

您需要的是 UmbracoApiController ( http://our.umbraco.org/documentation/Reference/WebApi/ ) 或者您的 umbraco 版本是 PRE 6.1,然后使用 /Base 扩展 ( http://our.umbraco.org/documentation/Reference/Api/Base/Index )

或者,如果您确实想跳过某个路由的所有 umbraco 魔法,请将路径添加到 web.config/AppSettings/umbracoReservedUrls。

关于c# - 跳过单一方法的所有 Umbraco 魔法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21309869/

相关文章:

umbraco - 使用 Umbraco 自定义 url

c# - 如何写入标准输入/从 SSH 连接的远程进程的标准输出读取? (Renci.SshNet)

c# - Swig c++/c# 不断获取 "Type Initialized Exception"

c# - 最小起订量 - 模拟 MVC Controller 的 Response.Cookies.Clear()

c# - 找不到资源 asp.net mvc

caching - Umbraco 缓存问题

c# - 将网格拉伸(stretch)到窗口大小

c# - Silverlight 中的配置文件

c# - 基于 Active Directory 为网站开发登录页面

c# - 如何使用新 API 以编程方式在 Umbraco 中创建新的 MemberType