Asp.net mvc 如何在ASP.NETMVC控制器操作中动态切换视图引擎?

Asp.net mvc 如何在ASP.NETMVC控制器操作中动态切换视图引擎?,asp.net-mvc,Asp.net Mvc,我想编写一个自定义视图引擎,返回自定义文本(如coma分隔符),有人知道我会如何动态更改视图引擎来处理这个问题吗 如果我正确理解了您的问题,您希望根据传递给控制器的参数使用不同的视图。如果是,您可以在控制器操作中使用此语句: return View("ViewName"); 否则,请澄清您的问题。如果我正确理解您的问题,您希望根据传递给控制器的参数使用不同的视图。如果是,您可以在控制器操作中使用此语句: return View("ViewName"); 否则,请澄清您的问题。我将创建一个自定

我想编写一个自定义视图引擎,返回自定义文本(如coma分隔符),有人知道我会如何动态更改视图引擎来处理这个问题吗

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

return View("ViewName");

否则,请澄清您的问题。

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

return View("ViewName");

否则,请澄清您的问题。

我将创建一个自定义操作结果。当需要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;
        }

    }
publicjsonresult文件夹(字符串节点)
{
var relativePath=(节点=“根”)?“”:节点;
var path=path.Combine(基本路径,相对路径);
var folder=新目录信息(路径);
var subFolders=folder.GetDirectories();
var folders=新列表();
foreach(子文件夹中的var子文件夹)
{
添加(新的ExtJsTreeNode(subFolder.Name,subFolder.FullName.Replace(BASE_PATH,“”,“folder”));
}
返回Json(文件夹);
}
私有类ExtJsTreeNode
{
公共字符串文本{get;set;}
公共字符串id{get;set;}
公共字符串cls{get;set;}
公共ExtJsTreeNode(字符串文本、字符串id、字符串cls)
{
this.text=文本;
this.id=id;
this.cls=cls;
}
}

自定义ActionResult的示例。

我将创建一个自定义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;
        }

    }
publicjsonresult文件夹(字符串节点)
{
var relativePath=(节点=“根”)?“”:节点;
var path=path.Combine(基本路径,相对路径);
var folder=新目录信息(路径);
var subFolders=folder.GetDirectories();
var folders=新列表();
foreach(子文件夹中的var子文件夹)
{
添加(新的ExtJsTreeNode(subFolder.Name,subFolder.FullName.Replace(BASE_PATH,“”,“folder”));
}
返回Json(文件夹);
}
私有类ExtJsTreeNode
{
公共字符串文本{get;set;}
公共字符串id{get;set;}
公共字符串cls{get;set;}
公共ExtJsTreeNode(字符串文本、字符串id、字符串cls)
{
this.text=文本;
this.id=id;
this.cls=cls;
}
}

自定义ActionResult的示例。

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

除了将数据发送到哪个视图之外,您的控制器不应该知道或关心这一点。视图可以以任何可以想象的格式渲染。我在控制器中有发出RSS(XML)等的视图,可以将其发送到默认视图,也可以显式标识目标视图