Как вы переключаете View Engines на лету в действии контроллера ASP.Net MVC? - PullRequest
1 голос
/ 07 января 2009

Я хочу написать собственный движок представления, который возвращает пользовательский текст (например, разделенный запятой). Кто-нибудь знает, как я мог бы изменить движок представления на лету, чтобы справиться с этим?

Ответы [ 3 ]

1 голос
/ 07 января 2009

Я бы создал собственный ActionResult. Я использую функцию Json (), чтобы вернуть JsonResult, когда мне нужен JSON в качестве ответа. Я использую этот код для заполнения дерева ExtJS с использованием данных JSON.

    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 здесь .

0 голосов
/ 07 января 2009

Ваш контроллер не должен знать об этом или заботиться о нем, кроме того, в какой View отправлять данные. Представление может отображаться в любом мыслимом формате. У меня есть представления, которые генерируют RSS (XML) и т. Д. В контроллере либо отправьте его в представление по умолчанию, либо явно определите целевое представление.

0 голосов
/ 07 января 2009

Если я правильно понял ваш вопрос, вы хотите использовать разные представления в зависимости от параметров, передаваемых контроллеру. Если это так, вы можете использовать этот оператор в действии контроллера:

return View("ViewName");

В противном случае, пожалуйста, уточните свой вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...