使用@HTML帮助程序DropDownList更新.html

MVC4,C#,jQuery,Razor视图(.cshtml)

我正在尝试用@ HTML.DropDownList更新节点的.html():

 $('#CmpMASttF').html('@Html.DropDownList("CmpAdrsSt.State", (IEnumerable)ViewBag._State) @Html.ValidationMessageFor(m => m.CmpAdrsSt.State) ');  

这适用于@ HTML.EditorFor:

 $('#CmpMASttF').html('@Html.EditorFor(m => m.CmpAdrsSt.State) @Html.ValidationMessageFor(m => m.CmpAdrsSt.State) '); 

这是要更新的节点:

  <td tate:    

@ HTML.DropDownList代码本身可以正常工作,因此不是问题的根源:

  State:   @Html.DropDownList("CmpAdrsSt.State", (IEnumerable)ViewBag._State) @Html.ValidationMessageFor(m => m.CmpAdrsSt.State)  

当我尝试使用带有jQuery .html()的@HTML.DropDownList更新节点时,javascript块中的所有代码都被禁用。

我尝试编码字符串:

 var test = '@Ajax.JavaScriptStringEncode("Html.DropDownList(\"CmpAdrsSt.State\",(IEnumerable)ViewBag._State)")' 

但是当注入.html()时,它呈现为字符串而不是HTML DropDownList帮助器(在HTML之前添加@,“@ HTML.DropDownList …”没有区别)。

如何使用@HTML.DropDownList更新节点的.html()?

谢谢

有趣的使用Html帮助器注入… Html.DropDownList生成多行,生成一个未终止的javascript字符串。 你打算如何解决这个问题?

为什么不把它注入一个虚拟脚本模板div而让你的JQuery简单地复制它?

  

然后复制使用:

 $('#CmpMASttF').html($('#template').html()); 

我更喜欢尝试将HTML注入Javascript字符串文字中,因为这样可以更好地将UI与代码分开。