在我的MVC Web应用程序中,我在View中有一个文本区域,因为用户会将HTML文本放在该文本中,我想用自己的自定义标记替换html标记。
例如:
HTML标记:
<input type='text' name='MyList.First_Name' data-val='true' data-val-required='Please enter first name' />
替换为:
[~TextFieldTag|MyList.First_Name|||0|data-val=>true|data-val-required=>Please enter first name|~]
任何人都可以建议这样做的最佳方法是什么?
答案 0 :(得分:1)
我最初会建议一个简单的字符串替换,但考虑到替换的看似复杂的性质,这可能不是最好的方法。
可能最好的方法是获取HTML,将其转换为DOM元素,这可以通过将其放入元素innerHTML
中来完成:
document.querySelector('button').addEventListener('click', () => {
document.querySelector('#renderSpace').innerHTML = document.querySelector('textarea').value;
});
&#13;
Add some HTML:
<textarea></textarea>
<button>Press Me</button>
<div id="renderSpace"></div>
&#13;
您可以将您渲染的区域定位在屏幕外,以便用户实际看不到它。
从那里,我会走DOM树(基本上,从根开始,然后看看它的所有孩子,然后看看他们的孩子等,递归),读出你认为合适的任何属性然后写你的随你进行字符串替换。
这确实需要他们输入有效的HTML(这通常是一项要求,但很难依赖用户输入),因此您希望在一些好的,用户友好的错误处理那里。