【问题标题】:Creating Views dynamically in MVC5在 MVC5 中动态创建视图
【发布时间】:2014-08-12 02:18:45
【问题描述】:

我知道如何在 MVC 中创建视图。

但我正在寻找动态添加创建类型视图的想法,我会将脚手架模型作为参数传递给控制器​​方法。我无法手动操作,但我想在某些控制器操作期间添加视图。

我想要一个看起来像...的代码

public class SomeController : Controller
{
    public void SomeAction(string modelName)
    {
        //add view of create type 
    }
}

【问题讨论】:

  • 您能稍微澄清一下您的问题吗?我不确定这是否完全清楚。您是否希望以此创建新的视图(文件)? IE。用户提交代码,然后将其用作新视图的代码?这里有安全问题吗?
  • @RowanFreeman 我要做的就是通过将“modelName”作为参数传递给控制器​​操作,以编程方式添加视图。
  • 你能做到return View(modelName)吗?
  • 不,罗文·弗里曼。我还没有视图,但现在只想以编程方式创建。
  • 那么,正如我在第一条评论中所问的,您要创建一个新文件吗? modelName.cshtml?

标签: c# asp.net-mvc asp.net-mvc-5


【解决方案1】:

您可能需要查看RazorEngine,这将使您能够更好地控制构建强大的模板。基于“创建类型”,您可以选择特定的视图并将模型对象传递给视图。 Parse 方法的结果将是纯 html。

  string template = "Hello @Model.Name! Welcome to Razor!";
  string result = Razor.Parse(template, new { Name = "World" });

如果您想实现RazorEngine 无济于事的目标,请进一步说明您的要求。

【讨论】:

  • 我尝试使用 Razor nuGet 包执行此操作,但最终出现“无法加载文件或程序集 'RazorEngine,版本 = 3.4.1.0 ...”的问题。我检查了 .NET 4.5.1 是否安装在我的机器上。
  • 您是否使用“Install-Package RazorEngine”安装它?是否安装成功?我刚刚做了,它给出了一个错误,然后我从 web.config 中删除了“System.Web.Razor”的“dependentAssembly”部分。那时一切都奏效了。
  • RazorEngine安装成功后,在web.config中找不到这样的代码。即我无法获得“System.Web.Razor”的“dependentAssembly”部分。我正在使用 Visual Studio 2013 终极版。
猜你喜欢
  • 2017-07-26
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-23
相关资源
最近更新 更多