mvc html 生成图片,关于ASP.NET MVC:动态创建部分视图(CSHTML)

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

它像创建一个新文件,蒸一个字符串并保存一样简单吗?

您将如何存储文件名? 您正在使用数据库吗?

对的,这是可能的

只需使像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);

}

参见此相关文章编写/输出未转义的HTML字符串

看起来您已经阅读了相关信息。我希望避免使用数据库。我担心将文件写入文件系统。似乎编写HTML可能很简单,但是编写CSHTML可能会遇到一些障碍(例如,已编译视图与未编译视图)。我想如果我只是写HTML块,它应该和System.IO.File一样容易。

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

单击此处查看如何创建动态局部视图

快速解答:否(您不能/不应在运行时修改Views文件夹。)

ASP.NET MVC视图和共享视图旨在进行编译和运行。建议不要在应用程序运行时对其进行修改或添加新的建议,也不建议这样做。

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

MVC中有很多扩展功能,使您可以在视图中插入部分html。看一下PartialExtensions作为起点。

OP正在询问是否可能。您只是在说什么是明智的。

@AmmarCSE OP询问您是否可以动态地(在应用程序运行时)对Views文件夹执行IO。尽管投票否决,我还是要重申。修改Views文件夹,web.config或任何可能触发asp.net重新编译的东西都不是明智的选择。 Asp.net MVC强调约定。将任意用户提供的html blob与已发布的代码混合不是惯例。您提供的解决方案还避免在运行时修改Views文件夹。所以我不确定您的分歧源自何处。

对不起,我误会了你的答案。顺便说一句,我无法撤消我的弃权票,因为它告诉我它已被锁定,除非您编辑答案。您可以快速编辑以便撤消我的否决票吗?

谢谢。我已经弄清(限定)了我的答案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值