如何在MVC3中使用参数和列表创建表单
问题描述:
首先,我是MVC的新手 - 尝试ASP.NET MVC3。如何在MVC3中使用参数和列表创建表单
我想建立一个页面,看起来像这样:
开始日期:[日期框]结束日期:[日期 盒] [搜索按钮]
结果表]
用户输入开始和结束日期(必须验证),然后他们单击搜索按钮并返回匹配结果。
那么,我该如何构造?这里是我的模型类的想法:
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; }
}
所以,我的索引控制器动作应该contruct的ResultSearchModel的实例,并返回与此模型的视图?
我是在一个视图中执行此操作,还是必须对列表部分进行局部视图?
答
我会用一个显示模板的结果:
@Html.DisplayFor(x => x.ServiceEntries)
,然后你可以定义将被渲染为ServiceEntries集合中的每个元素相应的模板(~/Views/Home/DisplayTemplates/ServiceEntry.cshtml
)。所以你将有一个控制器有两个动作:一个渲染表单,一个从表单接受POST并处理搜索。在第一个操作中,您只需将ServiceEntries
属性留空即可返回视图模型,以便不显示任何结果,并在第二个操作中填充此属性。我也会使用IEnumerable<ServiceEntry>
作为类型。
感谢达林 - 我有点这个工作。因此,我的ServiceEntry.cshtml模板将只是一个表格行,每个属性都有一个td。有没有一种很好的方式来生成这个(即添加视图...)还是我必须手动编码? – 2011-02-03 20:24:40