2012-01-12 177 views
5

我有一个使用日期范围过滤器的网页,当用户点击'过滤器'动作链接并且控制器返回'索引'视图与过滤后的模型数据。将日期从视图传递到控制器mvc/c#

查看

@Html.ActionLink("Filter", "FilterDateRange", new { from = Url.Encode(Model.FromDate.ToString()), to = Url.Encode(Model.ToDate.ToString()) }, null) 

控制器

public ActionResult FilterDateRange(string from, string to) 
{ 
    var fromDate = DateTime.Parse(HttpUtility.UrlDecode(from)); 
    var toDate = DateTime.Parse(HttpUtility.UrlDecode(to)); 

    //do stuffs 

    return View("Index", statsPages); 
} 

我的问题是,是否有一个更优雅的方式来做到这一点?目前,日期值是在视图中进行url编码,然后在控制器中进行url解码,我宁愿控制器中的方法采用日期时间参数而不是字符串,这看起来有点冒险。

谢谢。

回答

4

为什么不只是使用DateTime参数?

@Html.ActionLink("Filter", "FilterDateRange", new { from = Model.FromDate, to = Model.ToDate }, null) 

public ActionResult FilterDateRange(DateTime from, DateTime to) 
{ 
    var fromDate = from; 
    var toDate = to; 

    //do stuffs 

    return View("Index", statsPages); 
} 

如果让模型联编程序执行它的操作,则不必担心编码,解码或解析。

+0

是的,这工作表示感谢。我认为你不能通过原始日期时间,因为它会破坏URL,但它看起来像模型活页夹处理这个,正如你所说的。 – RobJohnson 2012-01-12 13:40:25

相关问题