asp.net-mvc-3 - 如何在MVC3中构建带有参数和列表的表单

标签 asp.net-mvc-3

首先,我是 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/

相关文章:

asp.net-mvc-3 - StringLength 与 MaxLength 属性 ASP.NET MVC 与 Entity Framework EF Code First

asp.net-mvc-3 - 将序列化表单传递给 Action 并绑定(bind)到模型

c# - 如何制作 Response.Write(...);在我的 Controller 中

asp.net-mvc - MVC3 如何将多个复选框绑定(bind)到 ViewModel 中的 1 个属性

c# - 在单独的帮助程序类中访问 Controller 外部的 HttpContext session 的最佳实践

c# - 重用 MVC Controller 角色授权以显示菜单项

javascript - 在 JavaScript 中显示来自 resources.resx 的文本

asp.net-mvc-3 - 数据 URI 和潜在危险的 Request.Path 值

asp.net-mvc-3 - 在MVC3中使用自定义IPrincipal和IIdentity

asp.net-mvc - Uploadify 3.1 和 MVC 3.0 HTTP 500 错误