使用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 传递给该方法。我做错了什么?
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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
试试这个:
Try this: