ASP.NET MVC 2 - 简单搜索页面

时间:2010-08-10 18:29:30

标签: asp.net asp.net-mvc-2

我刚刚启动了ASP.NET MVC(来自WebForms),我正在努力解决一些非常基本的概念。

我想创建一个使用文本框进行日期输入的单个页面。我希望将日期输入传递给我的控制器的索引,如下所示:

  public ActionResult Index(int month,
                              int day,
                              int year){

        var visitors = visitorRepoistory.FindVisitorsByDate(month, day, year).ToList();

        return View("Index", visitors);
    }

到目前为止,我已经使用了带有强类型视图的脚手架,所以对我来说一切都很紧密。

我的观点会是什么样的?我会使用actionlink(毕竟这是一个get请求,对吗?)而不是提交按钮。

感谢。

2 个答案:

答案 0 :(得分:3)

我想了一会儿,然后才想出答案。最初扔给我的是将单个文本输入字符串转换为月,日和年组件的概念。在ASP.NET MVC中,只接受日期的字符串会容易得多。这样,您的代码就会更改为:

public ActionResult Index(string date) {
   try
   {
      DateTime dtDate = DateTime.Parse(date);
      var visitors = visitorRepoistory.FindVisitorsByDate(dtDate.month, 
                     dtDate.day, dtDate.year).ToList();

      return View("Index", visitors);
   }
   catch (FormatException)
   {
     //String was not a valid date/time
   }
}

有没有办法将其分成3个整数?我确定。但对我来说,这将是实现这一目标最简单/最快捷的方式。

因此,在视图中,您的表单看起来像这样:

<% using(Html.BeginForm("VisitorSearchController", "Index")) { %>
Enter a date: <%= Html.TextBox("date") %>
<input type='submit' value='Search' />
<% } %>

其中“VisitorSearchController”是您要回发的控制器的名称。当然,“索引”是您要发布的方法。我现在坚持使用提交按钮,除非你试图在页面上获得一个LinkBut​​ton等价物。但是你可以在功能之后保存“漂亮”部分,对吗?

编辑:为答案添加了视图代码。

答案 1 :(得分:0)

评论后

编辑

最简单的方法是将搜索输入页面发布(不是get)回到其他方法,解析日期,然后重定向到您指定的Action。

如果你想通过get来做,那么你可以使用一些Javascript trickeration链接到他们输入的内容,但我推荐前者。