ASP.NET MVC和JQuery动态表单内容
我想用JQuery动态地将字段添加到ASP.NET MVC表单。
例:
var widgets; $(document).ready(function() { widgets = 0; AddWidget(); }); function AddWidget() { $('#widgets').append(""); widgets++; }
这有效,但我打算手动迭代控制器中的表单值:
[AcceptVerbs("Post")] public ActionResult AddWidget(FormCollection form) { foreach (string s in form) { string t = form[s]; } return RedirectToAction("ActionName"); }
但是当我将用户发送回Controller中的Get Action时,我发现它必须使用输入的值设置FormData,然后使用<%scripting迭代添加小部件。
在当前版本中有什么最好的方法(5我相信)?
我的解决方案可能是这样的(伪代码):
在控制器中:
[AcceptVerbs("Post")] public ActionResult AddWidget(FormCollection form) { dim collValues as new Collection; foreach (string s in form) { string t = form[s]; collValues.add( t ) } ViewData("WidgetValues") = collValues; return RedirectToAction("ActionName"); }
您可以稍后详细说明
(抱歉将VB与C#混合,我是一个VB人)
我可能会忽略这一点,但是,您是否需要通过表单操作将数据实际发布回控制器? 为什么不使用jquery进行ajax调用将数据发布到控制器……或者更好的是Web服务? 发送数据异步,无需使用发送的数据值重建视图。
如果值正在被消耗并且从不再次使用,则此方法正常工作,但是,如果您计划持久保存数据并通过视图显示它,则模型应该真正支持数据结构。 也许是模型上的Dictionary
。
我不是ASP.net开发人员,但我从PHP知道您可以使用数组作为输入字段的名称
例如:
然后,您可以遍历post变量小部件,就像它是一个值数组一样。
没有搞乱动态命名变量等。
据我所知,问题是保留小部件中的已发布值。 我想你可以在视图渲染过程中渲染那些你不会在服务器上填充的小部件。
这里正确答案:
Asp.Net C#MVC动态表单(更改Dom结构并在服务器上获取数据)