Joe*_*Joe 1 jquery html-helper razor asp.net-mvc-4
MVC4,C#,jQuery,Razor视图(.cshtml)
我正在尝试用@ HTML.DropDownList更新节点的.html():
<script type="text/javascript">
$('#CmpMASttF').html('@Html.DropDownList("CmpAdrsSt.State", (IEnumerable<SelectListItem>)ViewBag._State) @Html.ValidationMessageFor(m => m.CmpAdrsSt.State) ');
</script>
Run Code Online (Sandbox Code Playgroud)
这适用于@ HTML.EditorFor:
$('#CmpMASttF').html('@Html.EditorFor(m => m.CmpAdrsSt.State) @Html.ValidationMessageFor(m => m.CmpAdrsSt.State) ');
Run Code Online (Sandbox Code Playgroud)
这是正在更新的节点:
<tr class="CmpMA"><td tate: </td>
<td colspan="4" ><span id="CmpMASttF" class="editor-field"></span> </td></tr>
Run Code Online (Sandbox Code Playgroud)
@ HTML.DropDownList代码本身工作正常,因此不是问题的根源:
<tr><td>State: </td>
<td colspan="4"><span class="editor-field">
@Html.DropDownList("CmpAdrsSt.State", (IEnumerable<SelectListItem>)ViewBag._State)
@Html.ValidationMessageFor(m => m.CmpAdrsSt.State)</span> </td></tr>
Run Code Online (Sandbox Code Playgroud)
当我尝试使用带有jQuery .html()的@HTML.DropDownList更新节点时,javascript块中的所有代码都被禁用.
我试过编码字符串:
var test = '@Ajax.JavaScriptStringEncode("Html.DropDownList(\"CmpAdrsSt.State\",(IEnumerable<SelectListItem>)ViewBag._State)")'
Run Code Online (Sandbox Code Playgroud)
但是当注入.html()时,它呈现为字符串而不是HTML DropDownList帮助器(在HTML之前添加@,"@ HTML.DropDownList ......,没有区别).
如何使用@HTML.DropDownList更新节点的.html()?
谢谢
有趣的使用Html帮助器注入... Html.DropDownList生成多行,生成一个未终止的javascript字符串.你打算如何解决这个问题?
<script id="template" type="text/template">
@Html.DropDownList("CmpAdrsSt.State", (IEnumerable<SelectListItem>)ViewBag._State) @Html.ValidationMessageFor(m => m.CmpAdrsSt.State)
</script>
Run Code Online (Sandbox Code Playgroud)
然后复制使用:
$('#CmpMASttF').html($('#template').html());
Run Code Online (Sandbox Code Playgroud)
我更喜欢尝试将HTML注入Javascript字符串文字中,因为这样可以更好地将UI与代码分开.