首先,我是 MVC 的新手 - 正在尝试 ASP.NET MVC3。
我想构建一个如下所示的页面:
Start Date: [Date Box] End Date: [Date Box] [Search Button]
[Table of Results]
用户输入开始和结束日期(必须经过验证),然后单击“搜索”按钮,返回匹配结果。
那么,我该如何构建它呢?这是我对 Model 类的想法:
public class ResultSearchModel
{
[Required]
[DataType((DataType.DateTime))]
[DisplayName("Start Date")]
public DateTime StartDate { get; set; }
[Required]
[DataType((DataType.DateTime))]
[DisplayName("End Date")]
public DateTime EndDate { get; set; }
public List<ServiceEntry> ServiceEntries { get; set; }
}
public class ServiceEntry
{
public DateTime Date { get; set; }
public string Code { get; set; }
public string Details { get; set; }
}
那么,我的索引 Controller 操作应该构造一个 ResultSearchModel 的实例并返回一个带有这个模型的 View ?
我是在一个 View 中执行此操作,还是必须对列表部分进行局部 View ?
最佳答案
我会为结果使用显示模板:
@Html.DisplayFor(x => x.ServiceEntries)
然后您可以定义相应的模板 (
~/Views/Home/DisplayTemplates/ServiceEntry.cshtml
),它将为 ServiceEntries 集合的每个元素呈现。因此,您将拥有一个具有两种操作的 Controller :一种用于呈现表单,另一种用于接受来自表单的 POST 并处理搜索。在第一个操作中,您只需离开 ServiceEntries
即可返回您的 View 模型。属性为空,以便不显示结果,在第二个操作中,您将填充此属性。我也会使用 IEnumerable<ServiceEntry>
作为类型。
关于asp.net-mvc-3 - 如何在MVC3中构建带有参数和列表的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4890838/