與MVC

2012-01-01 31 views
1

簡單的繼承我有這樣的擴展方法:與MVC

public static MvcHtmlString BenefitURL(this HtmlHelper Html 
              , DTOBaseBenefit benefit) 
    { 

     string title = **(benefit is DTOBenefitButtonText)** ? 
         ((DTOBenefitButtonText)benefit).ButtonText : 
         benefit.BenefitTitle; 

     if (string.IsNullOrEmpty(benefit.FileURL)) 
     { 
      return Html.ActionLink(title, 
            "GetBenefit", 
            new { benefitID = benefit.BenefitID }); 
     } 

     var url = new UrlHelper(HttpContext.Current.Request.RequestContext); 
     return Html.ActionLink(benefit.BenefitTitle, 
           url.Content(benefit.FileURL)); 
    } 

在視圖中我有這樣的:

@model IEnumerable<WellfareSystem.Entities.ViewModels.DTOBenefitButtonText> 
. 
. 
. 
    @for (int i = 0; i < Model.Count(); i++) 
    { 
    @Html.BenefitURL(Model.Skip(i).First()) 
    } 

現在:

public class DTOBenefitButtonText : DTOBaseBenefit 
{ 
.... 
} 

**問:在我的分機。方法的轉換檢查(好處是DTOBenefitButtonText)返回FALSE。儘管我將DTOBenefitButtonText傳遞給該方法,但它並不適用。我究竟做錯了什麼?

+0

如果調試到這一點,它說的是什麼類型'benefit'是什麼? (如果您添加手錶,或者在調試器中快速觀察變量)。 – CodingWithSpike 2012-01-01 18:46:54

回答

0

試試這個:

benefit.GetType() == typeof(DTOBenefitButtonText)