加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如何在ASP.NET MVC中实现流畅的api?

发布时间:2020-12-16 03:45:12 所属栏目:asp.Net 来源:网络整理
导读:我想在我的mvc网站上实现流畅的api.我得到了基础知识. 所以实现对象库如: public class UIElement{/*...*/}public class ButtonBase : UIElement{/*...*/}public class LinkButton : ButtonBase {/*...*/} public static class Extensions { public static
我想在我的mvc网站上实现流畅的api.我得到了基础知识.
所以实现对象库如:

public class UIElement{/*...*/}
public class ButtonBase : UIElement{/*...*/}
public class LinkButton : ButtonBase {/*...*/}

  public static class Extensions
  {
    public static T UIElementMethod<T>(this T element,string title)
      where T : UIElement
    {
      return element;
    }

    public static T ButtonBaseMethod<T>(this T element,string title)
      where T : ButtonBase
    {
      return element;
    }

    public static T LinkButtonMethod<T>(this T element,string title)
      where T : LinkButton
    {
      return element;
    }
  }

但是如何在没有一些flush方法调用的剃刀视图中使用它.

@Html.UIproject().LinkButton()
    .UIElementMethod("asd")
    .ButtonBaseMethod("asd")
    .LinkButtonMethod("asd")

但它返回类的名称.我试图为MvcHtmlString创建一个隐式运算符,但它没有被调用.
任何想法如何实现这一点.如何知道它是链和链.我喜欢Kendo UI的工作方式.

谢谢,
彼得

解决方法

您的UIElement类需要实现IHtmlString接口. Razor调用此接口的ToHtmlString方法,并返回HTML编码的字符串.

所以我将在abscract基础UIElement上实现它并创建RenderHtml方法,该方法可以由具体的LinkBut??ton等类实现:

public abstract class UIElement : IHtmlString 
{
    public string ToHtmlString()
    {
        return RenderHtml(); // This should return an HTML-encoded string.
    }

    public override string ToString()
    {
        return ToHtmlString();
    }

    protected abstract string RenderHtml();
}

如果在WidgetBase类的Reflector / JustDecompile / dotPeek中检查KendoUI,您将看到相同的模式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读