Viewbag“Value不能为null”,但它不是null

时间:2018-05-29 13:10:12

标签: c# .net asp.net-mvc

所以我用一个来自viewbag的值填充@ Html.DisplayText但是当值存在时我得到一个ArgumentNullException。

这是行动方法

public ActionResult Index(DateTime? fechaInicio, DateTime? fechafin, string currentFilter, string searchString, int? page)
{
    if (!fechaInicio.HasValue || !fechafin.HasValue) return View();
    if (searchString == null)
        searchString = currentFilter;
    ViewBag.CurrentFilter = searchString;
    ViewBag.CurrentFechaInicio = fechaInicio;
    ViewBag.CurrentFechaFin = fechafin;
    var param = new Parametros()
    {
        FechaInicio = fechaInicio.Value,
        FechaFin = fechafin.Value
    };
    IEnumerable<Registro> registros = _registroRepository.ObtenerRegistros(param);
    if (!String.IsNullOrEmpty(searchString))
    {
        registros = registros.Where(s => s.Patente.Contains(searchString));
    }
    if (!registros.Any())
        return View("SinResultados");
    int pageSize = 10;
    int pageNumber = (page ?? 1);
    return View("List",registros.ToPagedList(pageNumber, pageSize));
}

enter image description here

尝试改变

ViewBag.CurrentFechaInicio = fechaInicio;

ViewBag.CurrentFechaInicio = fechaInicio.Value;

但没有任何改变。

1 个答案:

答案 0 :(得分:4)

事情是:它不是字符串而是DateTime,因此as string返回null

你需要

.ToString()

方法

as关键字“is like a cast

  

请注意,as运算符仅执行引用转换,可空转换和装箱转换。 as运算符不能执行其他转换,例如用户定义的转换,而应使用转换表达式执行转换。