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