ASP.NET でレスポンシブデザインをするなら
最新バージョンのVisual studio 2013は、ASP .NET MVC5に対応しています。
2012までは、MVC4でしたが、2013よりMVC5も使えるようになりました。
MVC5とMVC4との違いは?
MVC5, MVC4ともにASP.NET 4.5(.1)上で動作します。
最大の違いは、OneASP.NETに対応していることです。
つまり、MVC5を満喫するためには、Visual Studio2013が不可欠です。
その他、MVC4との違いは以下となります。
- MVC5のプロジェクトはBootstrapテンプレートで生成されます。
- 属性ルーティングのサポート
- フィルタのオーバーライド
- 認証フィルタ
- ASP.NET Identityのサポート
この ASP.NET Identityのサポートがあることにより、ASP.NET上で
簡単にログイン認証のメカニズムが構築できます。
・ユーザーの指定した文字列での認証
・メールアドレスでの認証
・twitterアカウント
・Facebookアカウント
・Microsoftアカウント
など、様々な認証が用意されています。
こちらの詳しい実装方法の説明は、以下の本をご覧になるといいと思います。
詳しく解説されています。
http://www.wings.msn.to/index.php/-/A-03/978-4-7980-4179-7/
VB.net技術者のお勧めするレスポンシブなサイト作成方法
私は、社内システムの開発者として、Windows業務アプリケーションであれば
70システム以上を開発してきたが、世の中はWEB時代。
しかも、複数のデバイスとブラウザに対応するページを作れるのが一般的になりつつある。
そこで使われるのが、Bootstrap。単一のHTMLファイルで複数デバイスの表示に対応することができます。表示しているデバイスの種類やサイズに応じて表示を最適化することができる優れた技術です。
Bootstrapは、対応ブラウザの種類が多く、Chrome(Mac, Windows, iOS, Android)、Safari(Mac, iOS)、Firefox(Mac, Windows)、Internet Explorer(8以上: IE8ではrespond.jsが必要)、Opera(Mac, Windows)で利用でき、ブラウザ間の違いを吸収してページを表示できる点も魅力です。
これを使い、HTML5+CSS3+Bootstrapでサイトを作れる事を目標に勉強中です。
現在は、IDE:Visual Studio 2013 DB:SQL-Server 2012の開発環境です。
ここで利用する技術としては、やはりASP.NET MVC5ですね。
いろいろ調べたところ、もうすぐ、この作成方法を詳しく解説する本が出版されるようです。Visual Studio技術者としては必須のアイテムですね。
欲しい方はこちら
http://www.wings.msn.to/index.php/-/A-03/978-4-7980-4179-7/
VB .NETからエクセル出力
VB.NETからエクセルに出力するときの備忘録です。
参照設定にて「Microsoft Excel 14.0 Object Library」を追加
'どのファイルに記入するか指定して、Functionを呼び出し
Private Sub btnExec_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExec.Click
Dim Ret as Boolean=False
Ret=ExcelOutput("C:\TEST\テンプレート.xls")
End Sub
Imports Microsoft.Office.Interopを追加
Private Function ExcelOutput(ByVal LoadFilePath As String) As Boolean
Dim xlApp As New Excel.Application
'================== 起動時の処理 ===================
xlApp.Visible = False 'Excelを表示(必ずとも表示しなくてもよい)
xlApp.DisplayAlerts = False '保存時の問合せのダイアログを非表示に設定
Dim xlBooks As Excel.Workbooks = xlApp.Workbooks
Dim xlBook As Excel.Workbook = xlBooks.Open(LoadFilePath)
Dim xlSheets As Excel.Sheets = xlBook.Worksheets
Dim xlSheet As Excel.Worksheet
Dim xlRange As Excel.Range
Dim localByName As Process() = Process.GetProcessesByName("Excel")
xlSheet = xlBook.Worksheets(1)
xlRange = xlSheet.Range("A1")
xlApp.DisplayAlerts = False '保存時の問合せのダイアログを非表示に設定
xlRange = xlSheet.Range("P3") '記入したい場所
xlRange.Value = "ここに記入したい文字を書く"
MRComObject(xlRange)
'ファイルの名前をつけて保存保存
SaveFilePath = "C:\TEST\" '保存先
xlBook.SaveAs(SaveFilePath)
xlApp.DisplayAlerts = True '保存時の問合せのダイアログを表示に設定
'================== 終了処理 =====================
MRComObject(xlRange) 'xlRange の解放
MRComObject(xlSheet) 'xlSheet の解放
MRComObject(xlSheets) 'xlSheets の解放
xlBook.Close(False) 'xlBook を閉じる
MRComObject(xlBook) 'xlBook の解放
MRComObject(xlBooks) 'xlBooks の解放
xlApp.Quit() 'Excelを閉じる
MRComObject(xlApp) 'xlApp を解放
If localByName.Length > 1 Then
GC.Collect() 'ガベージコレクターにてEXCELを回収
End If
'-------------------------------------------------------------------------
GC.Collect() '終了後すぐ再起動したい場合は、強制的にガベージ コレクションを実行して下さい。
System.Threading.Thread.Sleep(1000) '回収待ち時間
'--------------------------------------------------------------------------
End Function
MRComObjectは下記をコピーしておく
#Region "メモリ解放"
Public Sub MRComObject(Of T As Class)(ByRef objCom As T, Optional ByVal force As Boolean = False)
Dim IDEEnvironment As Boolean = False 'メッセージボックスを表示させたい場合は、True に設定
If objCom Is Nothing Then
If IDEEnvironment = True Then
'テスト環境の場合は下記を実施し、後は、コメントにしておいて下さい。
MessageBox.Show("Nothing です。")
End If
Return
End If
Try
If System.Runtime.InteropServices.Marshal.IsComObject(objCom) Then
Dim count As Integer
If force Then
count = System.Runtime.InteropServices.Marshal.FinalReleaseComObject(objCom)
Else
count = System.Runtime.InteropServices.Marshal.ReleaseComObject(objCom)
End If
If IDEEnvironment = True AndAlso count <> 0 Then
Try
'テスト環境の場合は下記を実施し、後は、コメントにしておいて下さい。
MessageBox.Show(TypeName(objCom) & " 要調査! デクリメントされていません。")
Catch ex As Exception
MessageBox.Show(" 要調査! デクリメントされていません。")
End Try
End If
Else
If IDEEnvironment = True Then
'テスト環境の場合は下記を実施し、後は、コメントにしておいて下さい。
MessageBox.Show("ComObject ではありませんので、解放処理の必要はありません。")
End If
End If
Finally
objCom = Nothing
End Try
End Sub
#End Region
C1PrintDocumentのオブジェクトの全クリア
オブジェクトをクリアするときは、下記のコードでクリアする
'ドキュメント
Dim doc As C1.C1Preview.C1PrintDocument
'オブジェクトの全クリア
doc.Body.Children.Clear()
C1PrintDocumentの用紙サイズの設定
C1PrintDocumentを使い、定型用紙サイズではなく、指定用紙サイズに
したい場合は、下記のように記述する。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
doc = New C1PrintDocument 'ドキュメントのインスタンス化
doc.MaxPages = 1 'ドキュメントは1ページのみ
'用紙サイズを 30000 twipsに設定します。
doc.DefaultUnit = UnitTypeEnum.Twip
doc.PageLayout.PageSettings.SetPaperSizes(30000, 30000)
'マージン設定
doc.PageLayout.PageSettings.TopMargin = New Unit(0, UnitTypeEnum.Cm)
doc.PageLayout.PageSettings.LeftMargin = New Unit(0, UnitTypeEnum.Cm)
doc.PageLayout.PageSettings.RightMargin = New Unit(0, UnitTypeEnum.Cm)
doc.PageLayout.PageSettings.BottomMargin = New Unit(0, UnitTypeEnum.Cm)
'ドキュメントの表示
C1PrintPreviewControl1.Document = doc
End Sub
C1PrintDocumentのクリア
Private Sub MakeDoc1(ByVal doc As C1PrintDocument)
' ドキュメントを初期化
doc.Clear()
End Sub
C1PrintDocumentの文字列に囲み枠の指定
Private Sub MakeDoc1(ByVal doc As C1PrintDocument)
' ドキュメントのタイトルを作成
Dim rp As New RenderParagraph()
rp = New RenderParagraph()
'フォントの指定
rp.Style.Font = New Font("MS Pゴシック", 36)
'文字列の指定
rp.Content.Add(New ParagraphText("ここに文字列を入力", TextPositionEnum.Normal))
'文字の表示
doc.Body.Children.Add(rp)
' GetCharRectメソッドを使用するためには、文字の位置を計算するために
' まず最初にドキュメントを作成しなければなりません。
' その後再びドキュメントを作成して、個々の文字の周囲に
' 赤い四角形を描画します。
doc.Generate()
Dim textLength As Integer = rp.TextLength
' フラグメントには描画オブジェクトに関する情報が含まれます:
' rpオブジェクトの最初のフラグメントを取得
Dim rpf As RenderParagraphFragment = CType(rp.Fragments(0), RenderParagraphFragment)
' テキストの中のすべての文字に対して繰り返し
Dim i As Integer
For i = 0 To textLength - 1
' 文字の座標を取得
' 座標はC1PrintDocument.ResolvedUnit単位で返却されます
Dim charRect As RectangleD = rpf.GetCharRect(i)
' 文字を囲む四角形を作成
Dim r As New RenderRectangle()
' すべての四角形の座標を指定
r.X = New Unit(rpf.Bounds.Left + charRect.Left, doc.ResolvedUnit)
r.Y = New Unit(rpf.Bounds.Top + charRect.Top, doc.ResolvedUnit)
r.Width = New Unit(charRect.Width, doc.ResolvedUnit)
r.Height = New Unit(charRect.Height, doc.ResolvedUnit)
' 図形(四角形)の座標をオブジェクトの相対位置で指定
r.Rectangle.X = 0
r.Rectangle.Y = 0
r.Rectangle.Width = r.Width
r.Rectangle.Height = r.Height
r.Style.ShapeLine = New LineDef("1pt", Color.Blue)
' オブジェクトに四角形を追加
doc.Body.Children.Add(r)
Next i
End Sub