C# ASP.NETMVC&;JQuery动态表单内容
我想使用JQuery将字段动态添加到ASP.NET MVC表单中 例如:C# ASP.NETMVC&;JQuery动态表单内容,c#,jquery,asp.net-mvc,C#,Jquery,Asp.net Mvc,我想使用JQuery将字段动态添加到ASP.NET MVC表单中 例如: <script language="javascript" type="text/javascript"> var widgets; $(document).ready(function() { widgets = 0; AddWidget(); }); function AddWidget() { $('#widgets').
<script language="javascript" type="text/javascript">
var widgets;
$(document).ready(function() {
widgets = 0;
AddWidget();
});
function AddWidget() {
$('#widgets').append("<li><input type='text' name='widget" + widgets + "'/></li>");
widgets++;
}
</script>
<ul id="widgets">
</ul>
但是,当我将用户发送回控制器中的Get操作时,我会想到,我必须使用输入的值设置FormData,然后使用迭代添加窗口小部件,我可能没有注意到这一点,但是,您是否需要通过表单操作将数据发回控制器?为什么不使用jquery进行ajax调用,将数据发布到控制器……或者更好的是使用web服务?异步发送数据,无需使用发送的数据值重建视图
如果这些值正在被使用并且不再使用,那么这种方法就可以了。但是,如果您计划持久化数据并通过视图中的一个视图来呈现它,那么您的模型应该真正支持数据结构。可能是模型上的
字典
。我不是ASP.net开发人员,但我从PHP知道可以使用数组作为输入字段的名称
例:
然后,您可以迭代post变量小部件,就像它是一个值数组一样
不要乱搞动态命名变量等。据我所知,问题是要在小部件中保留发布的值。
我认为在视图渲染过程中,您可以在服务器上渲染您不想填充的最大窗口。我的解决方案可能是这样的(伪代码): 您可以稍后再计算细节
(很抱歉把VB和C#混在一起,我是一个VB的家伙)回想起来,我很确定我把这里的部分答案搞错了。在这些评论中看不到任何东西,请继续!
[AcceptVerbs("Post")]
public ActionResult AddWidget(FormCollection form)
{
foreach (string s in form)
{
string t = form[s];
}
return RedirectToAction("ActionName");
}
<input type="text" name="widgets[]" />
<input type="text" name="widgets[]" />
<script language="javascript" type="text/javascript">
var widgets;
$(document).ready(function() {
widgets = 0;
<% for each value in ViewData("WidgetValues") %>
AddWidget(<%= value %>);
<% next %>
});
function AddWidget( value ) {
$('#widgets').append("<li><input type='text' name='widget" + widgets +
"'>" + value + "</input></li>");
widgets++;
}
</script>
<ul id="widgets">
</ul>
[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");
}