2015-08-21 35 views
1

我想通过一个可空的Guid并将它用作字段的默认值,如果它不是空的,但我得到一个错误。通过一个可为空的指针

这里是我的代码:

 [HttpGet] 
     public ActionResult Create(Guid? pTETrackingClassID) 
     { 
      PTETrackingClass model = new PTETrackingClass(); 
      if (pTETrackingClassID != null) 
      { 
       model.TrackingClassCode = pTETrackingClassID; 
      } 

      return View(model); 
     } 

在这条线

model.TrackingClassCode = pTETrackingClassID; 

我收到此错误:

cannot implicitly convert type System.Guid? to System.Guid

于是我尝试这样做:

model.TrackingClassCode = new Guid(pTETrackingClassID); 

我也在这一行上发生错误。我错过了什么?

+1

你的意思是做'model.TrackingClassCode = pTETrackingClassID.Value;'? –

回答

3

的可空类型不能分配给他们的非空的等价物。您需要使用Value属性提取基础值。

model.TrackingClassCode = pTETrackingClassID.Value; 

由于juharr提到是他的评论,你会得到通过明确地铸造为空的对象相同的结果。

model.TrackingClassCode = (Guid)pTETrackingClassID; 
+1

或明确地将它们转换为'model.TrackingClassCode =(Guid)pTETrackingClassID;' – juharr

+0

@juharr感谢您的评论。我会把这个添加到我的答案中。 – Kapol

2

试试这个:

if (pTETrackingClassID.HasValue) 
      { 
       model.TrackingClassCode = pTETrackingClassID.Value; 
      } 
+0

在编辑之前发生了downvote(它不是我):-) – Kapol