如何在ASP.Net MVC Controller操作中动态切换View Engines?

时间:2009-01-07 17:05:03

标签: asp.net-mvc

我想写一个返回自定义文本的自定义视图引擎(比如昏迷分隔)是否有人知道我如何动态更改视图引擎来处理这个问题?

3 个答案:

答案 0 :(得分:1)

我创建了一个自定义ActionResult。当我需要JSON作为响应时,我使用Json()函数返回JsonResult。我使用此代码使用JSON数据填充ExtJS树。

    public JsonResult Folders(string node)
    {

        var relativePath = (node == "root") ? "" : node;
        var path = Path.Combine(BASE_PATH, relativePath);
        var folder = new DirectoryInfo(path);
        var subFolders = folder.GetDirectories();
        var folders = new List<ExtJsTreeNode>();
        foreach (var subFolder in subFolders)
        {
            folders.Add(new ExtJsTreeNode(subFolder.Name, subFolder.FullName.Replace(BASE_PATH, ""), "folder"));
        }
        return Json(folders);

    }

    private class ExtJsTreeNode
    {

        public string text { get; set; }
        public string id { get; set; }
        public string cls { get; set; }

        public ExtJsTreeNode(string text, string id, string cls)
        {
            this.text = text;
            this.id = id;
            this.cls = cls;
        }

    }

自定义ActionResult here的示例。

答案 1 :(得分:0)

如果我正确理解了您的问题,您希望根据传递给控制器​​的参数使用不同的视图。如果是这样,您可以在控制器操作中使用此语句:

return View("ViewName");

否则,请澄清您的问题。

答案 2 :(得分:0)

您的控制器不应该知道或关心这个,除了将数据发送到哪个View。视图可以呈现任何可以想象的格式。我有可以发出RSS(XML)等的视图。在控制器中,要么将其发送到默认视图,要么明确标识目标视图。