2017-05-05 24 views
0

我是軟件領域的初學者。我在將Datetime傳遞給類構造函數時遇到了問題。所以有一個ASP.Net MVC 5應用程序,它與後端工作的VB.net代碼交互。 (在這個幽默我)。無法在ASP.Net MVC 5中傳遞日期時間

這是我到現在爲止。

視圖模型:

public class Add 
{ 
    public DateTime? dateTime { get; set; } 
} 

控制器:

[HttpPost] 
public ActionResult AddLocationBlock(Add viewModel) 
{ 
     if(viewModel.dateTime !=null) 
     { 
      ClsArgs obj1 = new ClsArgs((viewModel.dateTime); 
                ^^ ERROR: matching constructor not found                
     }  
     return new EmptyResult(); 
} 

VB.net構造定義:

public ClsArgs(DateTime ExpirationDate); 

貝爾流解決方案的工作:

[HttpPost] 
    public ActionResult AddLocationBlock(Add viewModel) 
    { 
      if(viewModel.dateTime !=null) 
      { 
       DateTime dte = new DateTime(); 
       ClsArgs obj1 = new ClsArgs(dte);          
      }  
      return new EmptyResult(); 
    } 
+0

只是注意,你有這樣的:'ClsArgs((viewModel.dateTime);'你的第一個控制器塊 –

回答

3

您正試圖發送一個Nullable<DateTime>(這是什麼日期時間?實際上意味着它只是寫它的一個較短版本),並且您的構造函數需要DateTime。 在檢查空值或HasValue後,您必須使用Value才能得到實際的DateTime,否則如果實際爲空,則會得到異常。

更改此

ClsArgs obj1 = new ClsArgs(viewModel.dateTime) 

這個

ClsArgs obj1 = new ClsArgs(viewModel.dateTime.Value) 
+0

工作就像一個魅力。你可以解釋一下原因吧...... – Unbreakable

+0

@Unbreakable你需要了解可以爲空的類型 – User3250

+1

@Unbreakable在可讀空間上閱讀它們,就像robert說的一個特定類型的對象'Nullable '。該變量在'.HasValue'屬性的幫助下爲'null'。如果返回'true',那麼你會在變量的'.Value'屬性中找到對象的值。 – silkfire