2012-01-01 19 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

ответ

0

Попробуйте это:

benefit.GetType() == typeof(DTOBenefitButtonText)