我能做什么: 我的目标是创建一个视图,其中根据需要将包含TextBox和Table的用户控件添加到页面中。用户将在文本框中键入SQL查询,表格将用于呈现结果。
我需要做什么: 我需要在用户请求时将多个这些控件添加到页面中。它们将按步骤编号。
例如:
步骤1 = sql查询获取参数列表;
步骤2 = sql查询,它使用第一个参数返回一定的值;
步骤3 = sql查询,返回将与步骤2中的值进行比较的累计值总和。
每次单击“添加”按钮时,前一个下方会出现一个新的用户控件,我可以在其中创建我的SQL查询并生成我的答案。
我可以进行比较并查询数据库。没问题,我只是不确定如何在MVC中重用控件。
任何建议都会有所帮助, 谢谢, 乔治
答案 0 :(得分:0)
你要做的事情既有趣又复杂。我相信你掌握了解决方案的逻辑,所以我将专注于你提出的简单问题:“[我怎么能]将多个用户控件实例添加到一个视图页面?”
当然,有几种方法可以做到这一点。您可以使用javascript来克隆 模板html代码块,我可能这样做,我没有回发。但是,你没有提到javascript,所以你应该简单地在foreach循环中包含对RenderPartial的调用,并用增量值或列表提供循环。
View.aspx:
<%
//loop over sqlQueries in list, rendering a
// partial for each and passing the query into the partial.
foreach(var item in Model.listOfSqlQueries)
Html.RenderPartial("sqlBox", item);
%>
然后,在视图中有一个按钮发布到ViewResult并返回相同的列表和一个项目。
Controller.cs:
public ViewResult AddQueryBox(ViewModel viewModel)
{
//Add blank sql query to list
viewModel.listOfSqlQueries.Add(new SqlQuery());
//return calling view with newly updated viewmodel
return View("View", viewModel);
}