- PR -

Text -> Html に変換できますか?

投稿者投稿内容
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2008-09-02 15:04
お世話になります。

テキストファイルを簡易のHTML(又は.aspx)コードに変換したいのですがどうしたらいいでしょうか?
やりたいことは、Webフォームに、テキストボックスなどを貼り付けそこにテキストを作成しこれを.htm(.aspx)で保存する。
この時、簡単な文字のサイズ、フォントの変更、テキストの配置、色、画像をつけたいのですが、可能でしょうか?テキストボックスが RichEditCtrl のような機能があれば可能?と思いましたが実際のところASP.NET で作成したアプリにそのような機能を持たせられるのでしょうか?
他のソフトで作成したコードをそのまま保存し利用できればと思っていましたが、コンテンツページとして保存したいので(マスターページの子として表示するため)そのままでは、無理だと思いました。
何か、Web上で自分のアプリ内で加工して保存する手段などありますでしょうか?
教えてください。
ASP.NET C#
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2008-09-02 15:48
引用:

SLさんの書き込み (2008-09-02 15:04) より:

やりたいことは、Webフォームに、テキストボックスなどを貼り付けそこにテキストを作成しこれを.htm(.aspx)で保存する。
この時、簡単な文字のサイズ、フォントの変更、テキストの配置、色、画像をつけたいのですが、可能でしょうか?


たとえば Wiki記法 で文章を書くと、aspx を自動生成する機能を作りたいわけですよね。だとしたら、.NET 製の Wiki のソースを見てみたら参考になるかも知れません。

引用:

SLさんの書き込み (2008-09-02 15:04) より:
コンテンツページとして保存したいので(マスターページの子として表示するため)そのままでは、無理だと思いました。


コンテンツページと通常のページは何でしょうか。
上の ASPX を自動生成するときに、コンテンツページに必要なコードを吐き出してやればいいだけですよね。
_________________
かるあ のメモスニペット
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2008-09-02 16:24
お世話になります。

> コンテンツページと通常のページは何でしょうか
.htm の場合
コード:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>無題のページ</title>
</head>
<body>

</body>
</html>


.aspx のコンテンツページを追加すると
コード:
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="回覧板" %>
<%@ MasterType VirtualPath="~/MasterPage.master" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

</asp:Content>


となりContentPlaceHolder1の位置に表示できるようになる。と理解しました。


> Wiki のソースを見てみたら参考
「ウェブブラウザを利用してWebサーバ上のハイパーテキスト文書を書き換えるシステムの一種である」などとありましたが、意味がわかりません。もう少し調べてみますが、私がやってみようとしていることなのでしょうか?まだ調べが浅くもう少し調べます。

ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2008-09-02 19:28
コード:
   この文字は強調されて色は[color:#FF0000]赤[/color]です。
   [img src="http://xxx/xx.jpg"]


ってゆー、擬似コードを埋め込んでこれを、正規表現なりで抽出して
HTML タグに置換するのね。だから、テキスト中に記述された HTML タグ
は全てエスケープしておく必要がある。ただの文字列だから。

この掲示板でも、[code][/code]で囲むとその部分だけインデント
を考慮してくれる機能があるけど、これと同じものです。


こーゆー擬似コードを埋め込むためのツールバーとテキストBOXをコンポーネント化
したJavaScript ライブラリ 又は、コピペで貼り付けて実行可能なサンプルがある
から、これを使う。

在り処は自分で探してください。

ヒントは、かるあさんが書いています。




タコツボ
常連さん
会議室デビュー日: 2004/01/20
投稿数: 22
お住まい・勤務地: 京都・大阪
投稿日時: 2008-09-03 12:36
数年前に、ASP.NET(確か1.1)でCMSみたいのを作ったことがあります。
ユーザがデザインをカスタマイズできる機能があり、HTMLのタグも使えるように
なっていました。編集画面には、フリーのHTMLエディタ(確かTinyMce。
「html editor javascript」とかで検索すると、いくつか見つかると思います)
を使いました。

aspx上には multilineの textboxを設置して tinymceの scriptを仕込むだけで、
ロジックによるタグの変換だとかの小細工は一切不要だったはず。
textboxに入力されたデータの保存は、そのままtextプロパティの値を保存するだけ。
画面を開くときも、保存しておいたデータをそのまま textboxに貼り付けるだけで
OKだったかと。

設定次第でツールバーをカスタマイズできますし、普通のplain textモードにも
切り換えられるので、自動的に挿入されたタグを確認したり、タグを手入力することも
できたと思います。

ただ、使用できるタグに制限をかける必要があったため、保存時にフィルターする
ロジックを追加していました。

お望みのイメージと合致するようであれば。
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2008-09-03 15:23
お世話になります。

TinyMCE ってとってもおもしろいですね。
まだ、ざっとしか見てませんけど、うまく使うにはもう少し時間が必要ですね。
日本語のマニュアルのようなものが見つからないので結構大変かもしれません。

ちょっと頑張ってみます。ありがとうございました。
SL
大ベテラン
会議室デビュー日: 2008/05/02
投稿数: 183
投稿日時: 2008-09-07 20:03
お世話になります。

TinyMCE を使用するときの保存について教えてください。

こーどは、長いですがテキストボックスに下記を表示するようにしました。
たとえば、下記に
save_onsavecallback : "mysave"
function mysave() {
:
  window.location.reload(true);
}
を追加すると、セーブボタンを押した時、mysave が呼ばれポストバックされないためDBに書き込みたいのですがかきっ込み処理がうまくいきません。
実際は、上記でクッキーに印をつけ、強制リロード
string mode = (string)Request.Cookies["saveText"]["data"];
if (mode == "save")
SqlDataSource1.Update();
のようにしたものの下記 tiniMCE を張ったテキストボックスが初期化されてしまいデータが取れない。
また、save_onsavecallback : "mysave" を消してセーブボタンを押すとポストバックするようにすると保存は可能になるがポストバックの処理が、セーブボタンなのか他の処理によるものか区別がつきません。
どうしたら保存ボタンを押した時に保存処理できるのでしょうか?
教えてください。お願いします。




コード:

tinyMCE.init({
mode : "textareas",
elements : "elm1",
theme : "advanced",
plugins : "safari,spellchecker,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,pagebreak,imagemanager,filemanager",
theme_advanced_buttons1_add_before : "save,newdocument,separator",
theme_advanced_buttons1_add : "fontselect,fontsizeselect",
theme_advanced_buttons2_add : "separator,insertdate,inserttime,preview,separator,forecolor,backcolor",
theme_advanced_buttons2_add_before: "cut,copy,paste,pastetext,pasteword,separator,search,replace,separator",
theme_advanced_buttons3_add_before : "tablecontrols,separator",
theme_advanced_buttons3_add : "emotions,iespell,media,advhr,separator,print,separator,ltr,rtl,separator,fullscreen",
theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,spellchecker,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,|,insertfile,insertimage",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
content_css : "/example_data/example_full.css",
plugin_insertdate_dateFormat : "%Y-%m-%d",
plugin_insertdate_timeFormat : "%H:%M:%S",
external_link_list_url : "example_data/example_link_list.js",
external_image_list_url : "example_data/example_image_list.js",
flash_external_list_url : "example_data/example_flash_list.js",
template_external_list_url : "example_data/example_template_list.js",
theme_advanced_resize_horizontal : false,
theme_advanced_resizing : true,
apply_source_formatting : true,
spellchecker_languages : "+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv",

file_browser_callback : 'myFileBrowser'

});




[ メッセージ編集済み 編集者: SL 編集日時 2008-09-07 20:04 ]

[ メッセージ編集済み 編集者: SL 編集日時 2008-09-07 20:04 ]
コードを見やすくしようと何度か編集にトライしましたがうまくいきませんでした。

[ メッセージ編集済み 編集者: SL 編集日時 2008-09-07 20:06 ]
タコツボ
常連さん
会議室デビュー日: 2004/01/20
投稿数: 22
お住まい・勤務地: 京都・大阪
投稿日時: 2008-09-08 13:51
言いだしっぺのタコツボです。

セーブボタンというのは、HTMLエディタとして表示された状態での
ツールバーにあるFDマークのボタンのことでしょうか?

記憶が曖昧ではありますが、この手のHTMLエディタというのは、
あくまでクライアントブラウザ上の入力欄(textarea)の入力内容を
クライアント側で簡便に編集できるようにする仕掛けだったかと。

なので、セーブボタンというのは「入力欄内に記入した内容に関して
ブラウザからクライアントローカル側に保存する」ためのボタンであって、
サーバ側にPost等のリクエストを送るためのものではなかったのでは
ないかと。

入力された内容を、「サーバ側にPostbackして、DBに保存する」と
いうことをされたいのであれば、普通のボタン(asp:button)を
配置しておいて、そのボタンのclickedイベントにて入力欄のtextプロパティを
普通に参照すればよかったかと思います。

今手元にasp.net動かせる環境が無いので、あやふやですみません。

スキルアップ/キャリアアップ(JOB@IT)