在Javascript中处理多行HTML
我正在使用Javascript定义网页上的按钮行为。我所追求的行为是在我的页面的某个地方插入一些新的HTML,但是我想使用MVC扩展方法在Javascript中处理多行HTML,javascript,jquery,html,asp.net-mvc,Javascript,Jquery,Html,Asp.net Mvc,我正在使用Javascript定义网页上的按钮行为。我所追求的行为是在我的页面的某个地方插入一些新的HTML,但是我想使用MVC扩展方法HTML.EditorFor来定义将要插入的新HTML 我想做的是: $("#myButton").click(function() { $("@(Html.EditorFor(x => x.SomeModelProperty))").insertBefore(<somewhere>); }); $("<div&
HTML.EditorFor
来定义将要插入的新HTML
我想做的是:
$("#myButton").click(function() {
$("@(Html.EditorFor(x => x.SomeModelProperty))").insertBefore(<somewhere>);
});
$("<div>
<label for="ModelData_SomeModelProperty">SomeModelProperty</label>
</div>
<div> .... (you get the idea)
在理想情况下,我可以使用EditorFor
以某种方式在一行上呈现上述所有内容,或者使用某种特殊的Javascript语法来定义多行字符串(如在C#中使用单引号),但到目前为止,我还是空白
我尝试调用到htmlstring
并手动编辑结果字符串以删除换行符,我知道我可以使用/
在Javascript中转义新行,但这样做的问题是,我必须处理转义的HTML,它看起来有点像以下内容:
$("#myButton").click(function() {
$("@(Html.EditorFor(x => x.SomeModelProperty))").insertBefore(<somewhere>);
});
$("<div>
<label for="ModelData_SomeModelProperty">SomeModelProperty</label>
</div>
<div> .... (you get the idea)
我只是想知道是否有人尝试过类似的方法,可能会有更优雅的方法?一种方法是将其写入html中的隐藏div,而不是直接写入javascript。然后,您可以从dom中读取它以在脚本中使用 所以你的页面会有一个
<div style="display:none" id="hiddenArea">
...insert whatever you want in here
with newline or whatever...
</div>
…在这里插入您想要的任何内容
用新线什么的。。。
然后在javascript中:
$("<div>
<label for="ModelData_SomeModelProperty">SomeModelProperty</label>
</div>
<div> ....
$("#myButton").click(function() {
var source = $("#hiddenArea").html();
$(source).insertBefore(<somewhere>);
});
$(“#我的按钮”)。单击(函数(){
var source=$(“#hiddenArea”).html();
$(source.insertBefore();
});
您可以创建一个HTML帮助程序,以便更好地控制返回的内容和格式
Razor代码在发送到视图之前在服务器上进行解析。你总是可以在一个隐藏的
中生成它,然后点击按钮来显示和/或克隆它。是的,在看到第二个答案后,我正试图按照这些思路构思一些东西。不幸的是,我需要在按下按钮时调用Html.EditorFor
的结果,而不是在呈现页面时,因此我认为我无法做到这一点…更新:上述内容-我找到了一种解析并替换所需的运行时变量的方法,使之成为更有效的方法。谢谢伟大的如果你的解析问题变得一团糟,你可能想看看类似于js TemplatingHanks的东西是的,这和上面的结合证明是我的解决方案。以前没有深入研究过自定义html助手,所以这是一次很好的体验!