我想写一个返回自定义文本的自定义视图引擎(比如昏迷分隔)是否有人知道我如何动态更改视图引擎来处理这个问题?
答案 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)等的视图。在控制器中,要么将其发送到默认视图,要么明确标识目标视图。