动态创建局部视图(CSHTML)

时间:2015-05-22 20:10:41

标签: asp.net-mvc razor

ASP.NET MVC 5中是否可以在/ Views / Shared目录中动态创建部分视图(cshtml)?我有一种情况,人们将上传一堆HTML作为字符串,并认为将性能存储在文件系统上会更好。

是否像创建新文件一样简单,使用字符串并保存?

3 个答案:

答案 0 :(得分:1)

是的,有可能

只需制作像DynamicView.cshtml

这样的视图
@model DynamicView
@Html.Raw(Model.HTMLString)

现在,您将用于存储HTML和指向它的指针的方法是另一回事。您可以将已清理的HTML存储在数据库中,并通过调用Controller来检索它,如

public ActionResult DynamicView(ind id)
{
DynamicView model = new DynamicView();
DynamicView.HTMLString = dbContext.HTMLViews.Where(v => v.id == id);

return View(model);
}

如果您希望将提交的HTML写入文件,则可以改为

public ActionResult DynamicView(string filePath)
{
DynamicView model = new DynamicView();
DynamicView.HTMLString = ...code that reads file

return View(model);
}

请参阅此相关帖子Writing/outputting HTML strings unescaped

答案 1 :(得分:0)

快速回答:否(您不能/不应该在运行时修改视图文件夹。)

ASP.NET MVC视图和共享视图旨在编译和运行。在应用程序运行时修改它们或添加新的它们根本不可取或不实用。

更有意义的是将上传的html blob存储在数据库,文件系统,存储blob(云)中。然后对您的共享视图或特定视图进行编码,以根据登录的用户从存储的位置检索特定的html blob。

MVC中有很多扩展函数可以让你在视图中插入部分html。以PartialExtensions为出发点。

答案 2 :(得分:0)

我需要创建将从DB生成的顶级菜单。我尝试了很多使用局部视图创建它。但我发现大多数情况下部分视图用于静态内容。最后我喜欢一些有用的教程请找到以下内容我希望它也会对你有帮助。

click here了解如何创建动态部分视图