【发布时间】:2016-01-24 04:43:26
【问题描述】:
在 asp.net 中,您可以使用 asp:Repeater 来动态生成控件。
例如:
<asp:Repeater runat="server" id="rpt">
<ItemTemplate>
<asp:Textbox runat="server"/>
</ItemTemplate>
</asp:Repeater>
然后你可以在服务器端循环遍历项目:
foreach(var items in rpt.Items)
{
}
在 MVC 中,你可以这样做:
@foreach(var item in model)
{
@Html.TextBoxFor(a=>item.searchCriteria);
}
但是有一个问题:
我想在用户点击添加更多文本框按钮时生成文本框:
如果我在 MVC 中使用 foreach,那么我将无法获取控制器上的用户输入,而且我没有要循环的模型。
最终所需的输出将是:
用户点击“添加更多文本框”按钮后,底部会追加一个新的文本框,用户点击搜索按钮后,文本框内的文本会生成一个查询字符串,类似这样:
查看:
<input name="searchCriteria" type="text" class="form-control" />
<input name="searchCriteria" type="text" class="form-control" />
<input name="searchCriteria" type="text" class="form-control" />
<input name="searchCriteria" type="text" class="form-control" />
控制器:
public ActionResult Search()
{
string queryString = Request.RawUrl;
//parse the querystring here
return View(NumberOfVisitorsReport);
}
而生成的查询字符串将是:
www.website.com/?searchCriteria=a&searchCriteria=b&searchCriteria=c
那么在 MVC 中有没有其他方法可以实现这一点?
编辑:
我看过一些关于“如何在 MVC 中动态生成控件”的帖子
例如
Control creation based on model value in MVC4
他正在根据数据库中的值生成控件,如果我将其实施到我的网站,控件将在每次回帖时失去价值。
【问题讨论】:
-
您可以使用 JavaScript...当您想在客户端发生某些事情时,这通常是最好的方法。
标签: c# asp.net asp.net-mvc asp.net-mvc-4