2014-10-16 3 views
0

텍스트 편집기를 사용하여 데이터베이스에 기사를 삽입 할 수있는 웹 양식을 만들었습니다. 내 기사 테이블에는 다음과 같은 필드 이름이 있습니다. id, title, content, type 및 uploadDate. 'content'fieldname은 텍스트로 구성됩니다. 이 텍스트에는 또한 article 테이블에 링크되지 않은 tag (즉, tag_id, name, type)라는 다른 데이터베이스 테이블의 데이터가 포함됩니다. 나는 웹 양식에 대한 기사를 볼 때데이터를 링크로 생성하고 출력하는 방법은 무엇입니까?

, 그들은 다음과 같은 출력으로 같이 :

:

Pellentesque eget elit tag1. Vivamus ut lacinia lectus. Mauris eu efficitur mi. 
Nam blandit est ut justo scelerisque, in sagittis nibh scelerisque. 
tag2 placerat id risus ut aliquam. Vestibulum maximus rutrum arcu et sagittis. 

내 질문에, 내가 아래 원하는 출력과 같이 내 기사의 내용을 만들 수있는 방법이다

Pellentesque eget elit ***tag1***. Vivamus ut lacinia lectus. Mauris eu efficitur mi. 
Duis placerat id risus ut aliquam. Vestibulum maximus rutrum arcu et sagittis. 
***tag2*** id consequat dui. Suspendisse non imperdiet odio. 

해당 콘텐츠의 링크 된 태그 이름 (tag1 &)을 표시합니다. 링크는 일종의 쿼리 문자열로 구성되며, 클릭하면 해당 태그의 ID 레코드 (DataTable을 통해)를 보유하고있는 웹 페이지로 렌더링됩니다.

이 방법을 사용하면 태그 이름에 대한 하이퍼 링크를 만들어야한다는 것을 알고 있습니다. 그러나 확실히 알지 못합니다. 어떻게 동적으로 생성합니까? (예 : [tag1, tag2]의 모든 인스턴스를 다음과 같이 설정하십시오. 하이퍼 링크). article의 insert 메서드 나 my aricle의 getData() 메서드에서이 작업을 만들어야합니까?

도움이 될 것입니다. 많은 감사합니다

+0

하지 완전한 대답을하지만, 표준 대신에 서식있는 텍스트 상자를 필요로 시작 텍스트 상자. –

+0

나는 tinymce 텍스트 편집기를 사용하여 데이터베이스에 기사를 삽입하고 있는데, 이것은 당신이 제안한 것입니다. 당신의 답변에 감사드립니다. – user3070072

답변

1

글 상자 자체에서 클릭 가능한 링크로 편집 가능한 기사인지 여부는 조금 확실하지 않습니다. 나는 그렇지 않다고 생각했는데 이것은 기존 기사의보기 페이지입니다.

이이 작업을 수행하는 방법에는 여러 가지가 존재하는 경우가 있다면, 개인적으로는 HtmlGenericControl 사용하는 것이 좋습니다 것 :

protected override void OnPreRender(EventArgs e) 
{  
    var ctrl = new HtmlGenericControl("div"); 
    string html = this.GetArticleText(); 

    // create the html formatted HTML/Links taking into account anti-xss attacks 
    foreach(var tag in this.LoadAllTags()) 
    { 
     html.Replace(tag.Key, this.CreateLinkHtml(tag); 
    } 

    ctrl.InnerHtml = html; 

    this.SomePageContainer.Controls.Add(ctrl); 

    base.OnPreRender(e); 
} 
+0

답장을 보내 주셔서 감사합니다. 이것은 훌륭한 출발점입니다. 하나의 마지막 질문을하고 싶습니다. insert() 메소드 내에서이 로직을 어디에 배치 할 것인지, 아니면 새로운 메소드를 생성하고 insert()와 getArticle() 메소드를 링크 할 것입니다. 많은 감사합니다. – user3070072

+0

@ user3070072 내 대답을 편집했습니다. 개인적으로 이것을 OnPreRender 섹션에 넣었습니다. 그렇게하면 나중에 추가 할 수있는 이벤트가 발생하면 호출됩니다. 분명히 GetArticleText(), LoadAllTags() 및 CreateLinkHtml() 메서드를 직접 추가해야합니다. – Liath

+0

아 ...이 말이 훨씬 더 의미가 있습니다. 귀하의 시간과 성원에 진심으로 감사드립니다. LoadAllTags() 메소드의 목적은 태그 데이터베이스에서 모든 태그의 이름을 호출하는 것입니까? 그렇다면 15 만 건이 넘는 기록이 있습니다 ... 괜찮을까요? 조언을 더 부탁드립니다. 감사합니다 – user3070072

관련 문제