2011-02-03 84 views
4

首先,我是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的实例,并返回与此模型的视图?

我是在一个视图中执行此操作,还是必须对列表部分进行局部视图?

回答

3

我会用一个显示模板的结果:

@Html.DisplayFor(x => x.ServiceEntries) 

,然后你可以定义将被渲染为ServiceEntries集合中的每个元素相应的模板(~/Views/Home/DisplayTemplates/ServiceEntry.cshtml)。所以你将有一个控制器有两个动作:一个渲染表单,一个从表单接受POST并处理搜索。在第一个操作中,您只需将ServiceEntries属性留空即可返回视图模型,以便不显示任何结果,并在第二个操作中填充此属性。我也会使用IEnumerable<ServiceEntry>作为类型。

+0

感谢达林 - 我有点这个工作。因此,我的ServiceEntry.cshtml模板将只是一个表格行,每个属性都有一个td。有没有一种很好的方式来生成这个(即添加视图...)还是我必须手动编码? – 2011-02-03 20:24:40

相关问题