[英]How to dynamically create css/js/html files and serve back at runtime with ASP.NET MVC
好的,完美的例子:tryIt编辑器(w3schools),jsbin,jsfiddle。 我希望用户在不同的textareas中键入css / js / html,按一下魔术按钮并修饰,输出显示在iframe中。
代码示例是值得赞赏的,但是我比真正的实现更渴望获得解决方案。 例如,我可以轻松地将js / html / css作为字符串发送到服务器。 然后为它们动态创建文件。 但是那又怎样呢?
我想让这些文件仅存在于POST&GET中。 我不想重新制作jsfiddle,我想快速向用户显示他们有什么输出,而不是将其保存以供以后使用。 所以我不希望这些文件保存到内存中。 我希望将它们发送给用户,如果他们刷新页面,则该页面消失了。
从技术上讲,任何服务器端操作方法都可以返回任何类型的响应。 因此,与其考虑文件,不如考虑响应类型。 即:
因此,您至少需要三种操作方法。 例如,按下“魔术按钮”可以重新加载框架(带有包含HTML / CSS / JS输入的POST请求):
text/html
,它本身: head
节点中包含标准标记,这些标记引用CSS和JavaScript“文件”的路径(这些文件不是真正的文件,只是动作响应) 从操作方法返回自定义响应的一种简便方法是使用ContentResult
类型:
return Content(htmlText, "text/html");
要么:
return Content(cssText, "text/css");
因此,您的服务器端代码可以例如从客户端获取CSS文本,然后像这样将其回显。 (请注意各种攻击,例如XSS。这种简单的实现可能不太理想,但是应该让您入门。)真正需要包装在任何自定义文本中的唯一方法就是HTML响应,您可以在其中进行静态定义HTML服务器端,并将用户输入的HTML放在body
元素中。
因此,请大声考虑一下,如果对frame / iframe的POST请求包含三个值,那么基本的HTML服务器端操作可能类似于:
public GetHTML(string html, string css, string javascript)
{
// temporarily store the css somewhere server-side
// temporarily store the javascript somewhere server-side
// build the html response from static dressing around the user-input html
return Content(htmlString, "text/html");
}
CSS / JS存储在服务器的临时位置,可能利用会话状态或任何内置的临时存储机制。 在上述操作返回其响应之后,浏览器将从该响应中的标签请求CSS / JS操作,这些操作很简单:
public GetCSS()
{
// if the temporary location (session?) has a css value
// get that value
// else
// get a default, likely empty value
return Content(cssString, "text/css");
}
// repeat for the javascript content
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.