我在这里使用 MVC 4,并且我有一个从 XML 文件生成的活动列表的页面。可以检查超过 1 个活动,并且在每个活动中,用户可以设置日期、成人/儿童人数。我的计划是当用户点击提交时,所有被检查的活动都被放入一个 ActivityItems 列表中。这是我将 ActivityItem 定义为:
活动项目类
public class ActivityItem
{
public string ActivityID { get; set; }
public string Name { get; set; }
public string Date { get; set; }
public int NumAdults { get; set; }
public int NumChildren { get; set; }
public decimal TotalPrice { get; set; }
}
我的视图看起来像这样(我去掉了很多样式和格式以使代码更易于阅读)。请注意,@item.ActivityID 从“ACT001”开始,然后是“ACT002”,然后是“ACT003”,以此类推,直到 n 次。
@model IEnumerable<Project.Models.Activity>
@using (Html.BeginForm())
{
<ul data-role="listview" data-inset="true">
@foreach (var item in Model)
{
<li>
<div class="activity" id="@item.ActivityID">
<h3>@item.Name</h3>
<input type="checkbox" id="@item.ActivityID-Check" name="checkbox"/>
<label for="select-choice-0" class="select">Date:</label>
<select name="select-choice-0" id="@item.ActivityID-Date">
<option value="07/03/2012">07/03/2012</option>
<option value="07/04/2012">07/04/2012</option>
<option value="07/05/2012">07/05/2012</option>
<option value="07/06/2012">07/06/2012</option>
</select>
@Html.DropDownList(item.ActivityID+"-AdultNum", AdultNum)<br />
Price/Adult C$:@Html.TextBox(item.ActivityID+"-AdultPrice", item.PricePerAdult)
@Html.DropDownList(item.ActivityID+"-ChildNum", ChildNum)<br />
Price/Child C$: @Html.TextBox(item.ActivityID+"-ChildPrice", item.PricePerChild)
<label style="color:Blue"><h3>Total Price C$:</h3></label>
<input type="text" id="@item.ActivityID-Sum" readonly="readonly"/>
</div>
</li>
}
</ul>
<input type="submit" id="submit" value="Submit" />
}
因此,基本上,如果单击特定项目(@item.ActivityID-Check)的复选框并提交表单:
将使用从列表中的活动填充的以下字段创建一个 ActivityItem:
- 项目清单
- ActivityID = @item.ActivityID
- 名称 = @item.Name
- 日期 = @item.ActivityID-日期
- NumAdults = @item.ActivityID-AdultNum
- NumChildren = @item.ActivityID-ChildNum
- TotalPrice = @item.ActivityID-Sum
但是可以单击多个项目,并且在提交表单时,我需要返回一个 ActivityItems 列表。我觉得这是一个复杂的答案,因此,我不希望有一个完整的解决方案(尽管那会很棒哈哈)。但是,如果我能得到一些提示和指示,那将是一个很大的帮助。我真的很感激所有的建议。