在cshtml

时间:2015-08-04 11:42:23

标签: html5 razor model-view-controller

我试图在cshtml中声明DateTime FromDate和ToDate,并在Model不为null时分配它们。

@{       
DateTime FromDate;
DateTime ToDate;    

if (Model != null)
{
    FromDate = ViewBag.fromDate;
    ToDate = ViewBag.toDate;        
}}

我试图以这些方式声明DateTime变量,但是我得到的错误是"使用未分配的局部变量"

DateTime FromDate = string.Empty; DateTime FromDate= Convert.ToDateTime(string.Empty);

有人可以帮帮我。

1 个答案:

答案 0 :(得分:0)

您的错误源于if Model == null您的FromDateToDate永远不会被分配值。

所有代码路径都必须提供FromDateToDate一个值 - 因此,最好的办法是使用值初始化变量,即使它是任意的:

DateTime FromDate = new DateTime(); // instantiated as 0001/01/01
DateTime ToDate = new DateTime(); // instantiated as 0001/01/01

如果按此声明,您将不再收到错误Use of Unassigned local variable,因为DateTime将始终具有值,无论Model的状态如何。

您可以看到两种方法Here之间的差异。代码:

public class Program
{
    public static void Main()
    {
        Program.DateTimeWithoutValue();
        Program.DateTimeWithValue();
    }

    public static void DateTimeWithValue()
    {
        DateTime startDate = new DateTime();

        var i = 1;

        if (i != 1)
            startDate = DateTime.Now;

        Console.WriteLine(startDate); // valid  
    }

    public static void DateTimeWithoutValue()
    {
        DateTime startDate;

        var i = 1;

        if (i != 1)
            startDate = DateTime.Now;

        Console.WriteLine(startDate); // use of unassigned local variable error 
    }   
}