使用mvc简单继承

发布于 2024-12-24 20:14:21 字数 1246 浏览 1 评论 0原文

我有这个扩展方法:

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 传递给该方法。我做错了什么?

I have this extension method:

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));
    }

In the view I have this:

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

Now:

 public class DTOBenefitButtonText : DTOBaseBenefit
 {
 ....
 }

** Question: In my ext. method the cast check of (benefit is DTOBenefitButtonText) return FALSE. while it shoudn't since I pass DTOBenefitButtonText to the method. What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

人生戏 2024-12-31 20:14:21

试试这个:

benefit.GetType() == typeof(DTOBenefitButtonText)

Try this:

benefit.GetType() == typeof(DTOBenefitButtonText)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文