Простое наследование с MVC - PullRequest
1 голос
/ 01 января 2012

У меня есть этот метод расширения:

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 методу. Что я делаю не так?

1 Ответ

0 голосов
/ 29 февраля 2012

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

benefit.GetType() == typeof(DTOBenefitButtonText)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...