c#MVC将用户控件的多个实例添加到单个视图页面

时间:2010-07-15 12:49:30

标签: c# model-view-controller user-controls

我能做什么: 我的目标是创建一个视图,其中根据需要将包含TextBox和Table的用户控件添加到页面中。用户将在文本框中键入SQL查询,表格将用于呈现结果。

我需要做什么: 我需要在用户请求时将多个这些控件添加到页面中。它们将按步骤编号。

例如:
步骤1 = sql查询获取参数列表; 步骤2 = sql查询,它使用第一个参数返回一定的值; 步骤3 = sql查询,返回将与步骤2中的值进行比较的累计值总和。

每次单击“添加”按钮时,前一个下方会出现一个新的用户控件,我可以在其中创建我的SQL查询并生成我的答案。

我可以进行比较并查询数据库。没问题,我只是不确定如何在MVC中重用控件。

任何建议都会有所帮助, 谢谢, 乔治

1 个答案:

答案 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);
}