ASP.NETプロジェクト申告システム-4.28~5.2まとめ

18623 ワード

4.28
FileUploadはスクリプトでclickイベントをトリガーすることはできません.セキュリティの考慮に基づいています.こんなに長い間newsEditページを廃棄していました.これからはできるだけネットで既存のコードを探してから、やりましょう.既存のコードではなく、しばらくしてからこの方法が実装上不可能であることに気づくかもしれません.
Newsクラスにはstringタイプの変数が多く、NewsAttach 1~NewsAttach 15は、プログラムにおいてこれらの変数の値を数字(1~15)で使用するか、これらの変数に値を付与必要があり、初めての試みはGetAttach(News news,int n,out string newsattach)であり、関数においてnewsattachにnewsを付与する.NewsAttach(数値)は、C#のstringが参照タイプであるため実行できませんが、割り当てを行うと、新しい値が管理スタックに再割り当てされます.
 
ckeditorが使用する問題------構成:1、Webのbinフォルダの下にCKEditorを追加する.NET.dllは、Webサイトソリューションを右クリックして参照を追加し、選択することもできます.2、「_Samples」フォルダの下にある「ckeditor」フォルダを、Webサイトのルートディレクトリに追加します.中の内容を簡略化することができます.例えば、langの下にはenだけが残っています.js zh.js zh-cn.js,skinsの下にはv 2フォルダしか残っていません.3、config.jsではパーソナライズされた構成を行います
config.skin = 'v2';

config.resize_enabled = false;

config.toolbar =

[

['Bold', 'Italic', 'Underline', 'Strike', '-', 'NumberedList', 'BulletedList', '-', 'Link', 'Unlink'],

['Cut', 'Copy', 'Paste', '-', 'Find', 'Replace'],

['Styles', 'Format', 'Font', 'FontSize', '-', 'TextColor', 'BGColor']

];
config.font_names=' / ; / ; / _GB2312; / _GB2312; / ; / ; / ;';

4、「クライアントから(editor=「

This is some<...」)で潜在的な危険が検出するRequest.Form値.」この問題は、1)ckeditorプラグインを使用するページの上にこの属性を追加する必要があり、<%@Page ValidateRequest="false"%>2)webconfigに(VS 2010はasp.net 4.0を使用し、認証処理メカニズムを要求すると1つ目が失効するので、この修正も行います)
ASP.Netフロント:

head 

<script type="text/javascript" language="javascript" src="http://www.cnblogs.com/ckeditor/ckeditor.js"></script>

body 

<asp:TextBox ID="TextBoxNewsContent" runat="server" TextMode="MultiLine" Width="840px" Height="150px" ontextchange="textChange();" ></asp:TextBox>

<script type="text/javascript">

var editor=CKEDITOR.replace('<%=TextBoxNewsContent.ClientID %>');

</script>

JavaScript取得:
function beforePost() {

var obj = document.getElementById("TextBoxNewsTitle");

if (obj.value.length == 0) {

alert("        !");

obj.focus();

return false;

}

//editor.document.getBody().getText()     

//editor.document.getBody().getHtml()  html  

if (editor.document.getBody().getText() == "") {

alert("        !");

return false;

}

return true;

}

ASP.Netバックグラウンド:htmlテキストを取得:newsを直接使用する.NewsContent=TextBoxNewsContent.Text;htmlテキストをtextboxに付与もTextBox NewsContentをそのまま使用する.Text=news.NewsContent;
 
4.29
aspxでcsのコードでは、サーバを直接使用できます.MapPath関数ですが.csのクラスファイルでは、このように使用することはできません.Systemを使用します.Web.HttpContext.Current.Server.MapPath、aspxページのバックグラウンドコードはデフォルトでこのhttpcontextを追加しました.current参照.
mysqlの日付関数year(NewsDate)は年を返し、month(NewsDate)は月を返し、dayofmonth(NewsDate)は月の中日数を返します.mysqlでdatetimeと別の日付が同じかどうかを比較し、wheret to_を使用します.days('1989-12-12')=to_days(NewsDate)
もともとajaxcontroltoolkitのカレンダーコントロールは英語ですが、ToolkitScriptManagerコントロールにEnableScriptGlobalization="true"を加えるとwindowsシステムの言語バージョンに合わせて調整できます.中国語版windowsは中国語のカレンダーです.
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" EnableScriptGlobalization= "true">

</asp:ToolkitScriptManager>

できるだけ多くのコードを再利用して、このように更に修正する時、1つの場所だけを修正することができて、すべての場所がすべて修正する必要はありません.ページの再利用は、同じコードを関数に入れます.
ある时、出会った问题は、解决しにくくて、先に放して、试験の中で难题に出会って最后まで残すようにすることができます.その後、自分の能力が提供されたかもしれないので、問題は解決しました.今回のプロジェクトの前に残された問題はすべて記録されており、最後に多くの問題が解決されたことに気づいた.
headでよく使われるcssやjsのリファレンスは、scriptリファレンスに開始と終了ラベルがあることに注意してください.と書くと、vs 2010やブラウザのデバッグ時にページが表示されません.
web.configでsessionモード(mode)を構成する場合、デフォルトではInProc、つまりSessionをプロセス内に保存する(IIS 5はaspnet_wp.exe、IIS 6はW 3 wp.exe)、このプロセスは不安定で、あるイベントが発生するとプロセスが再開されるため、そのプロセス内に格納されているSessionが失われる.1、サーバーメモリの使用が一定の限度を超える、プロファイル中のprocessModelラベルのmemoryLimit属性2、Global.asaxまたはWeb.configファイルが変更された3、BinフォルダのWebプログラム(DLL)が変更された4、ウイルス対策ソフトがスキャンされた.configファイル..など...以上の場合、セッションを保存するプロセスが再起動され、セッションが失われます.私が出会ったのは、プロジェクトのupload添付ファイルがページをアップロードし、最後の添付ファイルを削除した後、(フォルダを同時に削除したためと推定)、sessionが失われたことです.従ってに変更して"ASP.NETステータスサービス"というサービスに保存します.このサービスは、管理->サービスで手動で開始する必要があります.
vssのバージョンが古いファイルで上書きされたり、他の人によって変更されたりしないように、自分のプロジェクトを定期的にバックアップします.
cssで背景画像を設定する文:background-image:url(../Imges/home/top_dh 01.gif)、画像urlはcssファイルに対する相対アドレスであり、相対パスのみ使用可能!!
 
4.30
tinyMCEが使用する問題(ckeditorよりもロード速度がかなり速く、機能がやや弱い)------
配置:1、公式サイトでtinymceの最新版をダウンロードして、tinymceをダウンロードしますlang_pack.zip(中国語サポートパッケージ)は、解凍してtinymceのコンテンツと統合し、サイトScripts/ディレクトリの下に2、tiny_mce\themes\advanced\skins\default\content.cssの最初の行はbody,td,pre{color:#000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:14 px;margin:8 px;}に変更されました.
フォントを10 pxから14 pxに変更し、フォントのデフォルトが小さすぎるという問題を解決します.ASPフロント:
<asp:TextBox ID="TextBoxNewsContent" TextMode="MultiLine" runat="server" onfocus='tinyMCEinit();' Width="800px" Height="300px"/>

<asp:Button ID="ButtonPost" runat="server" Text="     " OnClientClick="return beforePost();"/>

JavaScript:
<script language="javascript" type="text/javascript">

function tinyMCEinit() {

tinyMCE.init({

mode: "exact",

elements: "TextBoxNewsContent", //     textbox id

theme: "advanced", //    "simple"

plugins: "pagebreak",

theme_advanced_buttons1: "bold,italic,underline,separator,strikethrough,justifyleft,justifycenter,justifyright, justifyfull,bullist,numlist,fontsizeselect,backcolor,forecolor,undo,redo,",

theme_advanced_buttons2: "",

theme_advanced_buttons3: "",

theme_advanced_toolbar_location: "top",

theme_advanced_toolbar_align: "left",

theme_advanced_path_location: "bottom",

width: 800, //            

height: 350,

extended_valid_elements: "a[name|href|target|title|onclick],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",

language: "ch" //

});

}

function beforePost() {

var content = tinyMCE.get('TextBoxNewsContent').getContent();

if (content.length == 0) {

alert('      !');

return false;

}

return true;

}



</script>

バックグラウンド:TextBox NewsContentを直接使用する.Textで取得します.ckeditorと同じです.
 
5.1
後でデータベースの表を設計する時、できるだけ全面的に考慮して、むしろいくつかのあまり重要でない情報を多く保存して、保存する情報が少なすぎないでください.たとえばDownloadFileテーブルでは、idとfilenameが1つしかないわけではありません.また、ユーザーが自分で公開していないファイルを削除できないように、パブリッシャ、公開日などの付属情報が必要です.
データベースに物を保存し、できるだけプライマリ・キーを保存します.News情報テーブルにNewsEditorがニュース・パブリッシャーの名前を保存している場合、そのユーザーが名前を変更すると、自分のNewsを変更できません.また、他のユーザーは自分のUsrNameを他のユーザーの名前に変更すれば、他人のNewsを勝手に改ざんすることができます.stringを保存するのはバックグラウンドコードが書きやすいために、直接単表でクエリーしてページのコントロールに書けばいいだけですが、これは論理的なエラーをもたらし、決してできません.
GridViewは、この行の情報を格納するために使用できるidの列を非表示にします.より良い実装方法はGridViewのDataKeyNameプロパティを設定し、バックグラウンドでDataKeysで保存された値を取得することです.
GridViewNewsManage.DataSource = newsManage.GetList("NewsType=0");

GridViewNewsManage.DataBind();

GridViewNewsManage.Columns[6].Visible = false;

 
GridViewのテンプレート列にボタンを追加し、ボタンイベントをトリガーした後、行の値を取得するにはどうすればいいですか?フロント:
<asp:TemplateField> 

<ItemTemplate> 

<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /> 

</ItemTemplate> 

</asp:TemplateField> 

バックグラウンド:
protected void Button1_Click(object sender, EventArgs e) 

{ 

Button btn = sender as Button; 

GridViewRow row = btn.Parent.Parent as GridViewRow; 

string a = row.Cells[0].ToString();//           

string b = this.GridView1.DataKeys[row.DataItemIndex][0].ToString();//  DataKeys   

}

5.2
date_format(NewsDate,'%Y-%m-%d')mysqlフォーマット出力関数%Y年、%m月、%d月の日数、使用:
select date_format(NewsDate,'%Y-%m-%d') from news where ...
次のcssスタイルはclassプロパティがheadline 2のリンクに対して
.headline2 a {

color: rgb(255, 255, 255); line-height: 135%; font-size: 14px; font-weight: bold; text-decoration: none;

}

.headline2 a:hover {

color: rgb(255, 204, 0); text-decoration: underline;

}

以下のcssスタイル設定画像の機能はbuttonと似ており、マウスを動かすと「手型」が表示されます.
<img src="../Images/homepage/more.gif" onclick="window.location='MoreDown.aspx'" style="cursor:pointer;">

GridViewでAllowPaging="true"PageSize="8"を設定し、GridViewにこの属性を追加すると、ページを分割できますが、次のページへのジャンプボタンは表示されません
scriptは要素の後ろに続いています.jsは上から下への順序で実行されるため、headに置くとlabelという要素は取得されません(まだレンダリングされていません)
<asp:Label ID="LabelMydate" runat="server" Text=""></asp:Label>
<script type="text/javascript">

var today = new Date();//        

var obj = document.getElementById('<%= LabelMydate.ClientID %>');

var d = new Array(

"   ",

"   ",

"   ",

"   ",

"   ",

"   ",

"   ");
//today.toLocaleDateString() (today.getYear()) + " " + (today.getMonth() + 1) + " " + today.getDate() + " " obj.innerHTML
= ' ' + today.toLocaleDateString() + d[today.getDay()]; </script>