在ASP.NET Web应用程序中创建短代码

时间:2014-06-13 16:19:51

标签: c# asp.net iframe youtube shortcode

我正在开设一个网站,其中将嵌入很多YouTube视频。我想让它更容易嵌入到页面的文章中。

写这篇文章时:

 [youtube]SOMETHING[/youtube]

页面应自动创建:

  <iframe src="//www.youtube.com/embed/SOMETHING" 
         frameborder="0" allowfullscreen></iframe>

那么 - 我该怎么做?我一直在寻找,但一直找不到合适的解决方案。请将您的示例放在ASP.NET / C#中。

3 个答案:

答案 0 :(得分:1)

在ASP.NET中创建短代码很容易作为自定义解决方案。在输出文章之前

String html = "[YOUTUBE]Something[\\YOUTUBE]";

String replacementHtml = "<iframe src=\"//www.youtube.com/embed/$1\" frameborder=\"0\" allowfullscreen></iframe>";

Regex shortcodeRegex = new Regex(@"\[YOUTUBE\]([^\[\\]+)\[\\YOUTUBE\]");

String result = shortcodeRegex.Replace(html, replacementHtml);

记下replacementHtml中的$1。这就是匹配内部的内容。

然后将结果输出到页面。

答案 1 :(得分:1)

Wordpress风格的短代码应用程序。它将来自数据库或变量中变量的内容中的值[short code /]替换为用户控件内容。

App_Code文件 - &GT; modul_islemler.cs

public class modul_islemler 
{
 public static  string modul_olustur(string data){
    string aranan = @"\[(.*?)\/\]";
    Regex objRegex = new Regex(aranan);
    MatchCollection objCol = objRegex.Matches(data); 
    foreach (Match item in objCol)
    {data = data.Replace(item.Groups[0].Value, modul_yaz(item.Groups[1].Value.ToString()));
    }
    return data;
}
public static  string modul_yaz(string sayfa)
{       
    string[] ayir = sayfa.Split(' ');
    ArrayList myAL = new ArrayList();
    foreach (string a in ayir)
    {
        myAL.Add(a);
    }
    if (myAL.Count < 2) myAL.Add("");
    return LoadControl("~/plugins/" + myAL[0] + "/" + myAL[0] + ".ascx");
 }
 public static string LoadControl(string UserControlPath)
 {
   FormlessPage page = new FormlessPage();
    page.EnableViewState = false;
    // Create instance of the user control
    UserControl userControl = (UserControl)page.LoadControl(UserControlPath);
    page.Controls.Add(userControl);
    //Write the control Html to text writer
    StringWriter textWriter = new StringWriter();

    //execute page on server
    HttpContext.Current.Server.Execute(page, textWriter, false);

    // Clean up code and return html
    return textWriter.ToString();
   }
   public class FormlessPage : Page
{
    public override void VerifyRenderingInServerForm(Control control)
    {
    }
}

page.aspx

 <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
 <div class="detail">
 <div class="container">
  <asp:Literal ID="icerikLtrl" runat="server"></asp:Literal>
  </div>
  </div>
  </asp:Content>

page.aspx.cs - &gt; [slide_plugins /]短代码

public partial class page : System.Web.UI.Page
{
 protected void Page_Init(object sender, EventArgs e)
 {
  string txt="<div>blala [slide_plugins /] blabla</div>";
  icerikLtrl.Text = modul_islemler.modul_olustur(txt);
 }

插件/ slide_plugins / slide_plugins.ascx

<asp:TextBox runat="server" ID="Txt1"></asp:TextBox>
<asp:Button runat="server" ID="btn1" OnClick="btn1_Click" Text="Submit"></asp:Button>

插件/ slide_plugins / slide_plugins.ascx.cs

protected override void OnLoad(EventArgs e)
{
    //kontrol yüklendiğinde çalışacak kodlar       
    base.OnLoad(e);       
}
 protected override void OnInit(EventArgs e)
{               
    base.OnInit(e);
    InitializeComponent();        
}
  private void InitializeComponent()
{
   btn1.Click += new EventHandler(btn1_Click);      

}
 protected void btn1_Click(object sender, EventArgs e)// not working....
{
    Txt1.Text = "Example";   // not working....    

}

答案 2 :(得分:0)

这是我用来处理youtube短代码的方法

<Extension> Public Function ConvertYouTubeShortCode(text As String) As String
    Dim regex__1 As String = "\[youtube:.*?\]"
    Dim matches As MatchCollection = Regex.Matches(text, regex__1)
    If matches.Count = 0 Then
        Return text
    End If
    Dim width As Int32 = 620
    Dim height As Int32 = 349
    Dim BaseURL As String = "http://www.youtube.com/v/"
    For i As Integer = 0 To matches.Count - 1
        Dim length As Int32 = "[youtube:".Length
        Dim mediaFile As String = matches(i).Value.Substring(length, matches(i).Value.Length - length - 1)
        Dim player As String = "<div class=""video-container""><iframe width=""{2}"" height=""{3}"" src=""{4}{1}"" frameborder=""0"" allowfullscreen></iframe></div>"
        Return text.Replace(matches(i).Value, [String].Format(player, i, mediaFile, width, height, BaseURL))
    Next
End Function