dainousanの主にメモ

Sier勤務の30代の適当な日記です

vue.jsをちょっとだけ使ってみた

今更ながらvue.jsをちょっと使ってみました。

色々調べつつ試してみたところ、使えそうな感じはしますが、
postする時にdataをどうやって送るのか分かったのでメモ

var self = this;
var sdata = JSON.stringify(self.$data);
$.ajax('/api/Hoge', {
    type: "post", contentType: "application/json",
    data: sdata
});

self.$dataでdataに定義した内容を全部取れます

vue.js自体の使い方を解説しているサイト(本家も含む)は色々ありますが、
できればpostまでとかあってくれるとうれしいですね

JQuery UI Dialogにはまったのでメモ

ASP.NET MVCJQuery UI Dialogでiframeを使用して、色々とやっていたらはまった。
業務アプリでは良くある、何らかのコードの選択画面とか良くありますね。

$("<iframe src='hoge'").dialog

で、iframeを呼び出していました。

iframe側で色々やった後、呼び出し元で

$("dialog1").remove();
submit

見ないた感じで、クローズしたとに呼び出し元でsubmitしたらiframe側のbundleでエラーになった。

IE動きを見ている限りだとどうやら何をやってもIEはiframeのプロセスがいる模様
そのくせ、DOMは無いからbundleでエラーになったみたい。

ちなみに、reload()だとエラーにならない(ブラウザのF5だから)

なので、呼び出し元でsubmitする場合は、スクリプトのbundleをしないようにしましょう
ちなみに、cssは大丈夫でした

DropDownListForがいうこと聞か無い時

razorでDropDownListを作るときに、DropDownListForをよく使います。

@Html.DropDownListFor(m => m.iro ,iroitem);

結果、

<select>
<option></option>
<option value="赤"></option>
<option value="だいだい">だいだい</option>
</select>

が出力されます

ここでですよ、

個数
りんご 1
みかん だいだい 2

な表形式で入力する場合もありますよね?

ここで、色をDropDownListにしようと思います。

Html.DropDownListFor(m => m.hoge[i].iro ,iroitem);

だいたいが、こんな感じですよね?

ここでやっかいなのは、

Html.DropDownListFor(m => m.hoge[i].iro ,iroitem);

は、うまいこと動いてくれない。

ソースを追っかけようかと思ったが、面倒なのでとりえあず対応策

@Html.DropDownListFor(m => m => m.hoge[i].iro, Model.irolist.Select(n =>
        new SelectListItem()
        {
            Value = n.Value,
            Text = n.Text,
            Selected = n.Value == Model.hoge[i].iro
        }), "", new {})

になります。

MVC4、5でも同じ現象になるので、対応策で逃げることにしています。

Linqのorderby

Linqのorderbyの書き方を忘れるのメモ クエリ構文と、

メソッド構文がありますね。

 

クエリ

var result = (from p in list
              order by p.aaa,p.bbb

メソッド

var result = list.orderby(p => p.aaa)

メソッド複数

var result = list.OrderBy(p => p.aaa).ThenBy(p => p.bbb)

みたいな感じになります

asp.mvcのbundleで気を付けること

@styles.renderでbundleしたスタイルが読み込まれない事案発生

どうやら、bundle時に、cssで終わらなければいけない模様

// OK
bundles.Add(new StyleBundle("~/Content/themes/base/css").
Include( "~/Content/themes/base/*.css" ));

// NG
bundles.Add(new StyleBundle("~/Content/themes/base").
Include( "~/Content/themes/base/*.css" ));

しかも、bundlleしたらパスがおかしくなった。
imageを相対パスで指定してしたら読み込まれない。
色々とやってみると
どうやらbundle時のパスが重要

bundles.Add(new StyleBundle("~/Content/hoge/css").
Include( "~/Content/themes/base/*.css" ));

としたら、cssファイルが、/Content/themes/baseにあっても、
/Content/hogecssファイルがあることになるので要注意

なので、bundleする時は、

bundles.Add(new StyleBundle("~/Content/themes/base/css").
Include( "~/Content/themes/base/*.css" ));

と、実体に合わせてあげると吉です

vimのメモ

良く忘れるのでメモ

zi 折り畳みの有効無効の切り替え
zf 折り畳みを作成する
za 折り畳みの開け閉め
zd 折り畳みを削除する
:e ++enc=指定したいエンコーディング エンコーディングを指定する
:e ++enc=指定したいエンコーディング エンコーディングを指定する
:e ++ff=指定したいファイルのフォーマット ファイルフォーマットを指定する
CTRL+w + カレントウィンドウの高さを大きくする
CTRL+w - カレントウィンドウの高さを小さくする
CTRL+w > カレントウインドウの幅を大きくさくする
CTRL+w < カレントウインドウの幅を小さくする

ASP.NET MVCのModelState

ここのところずっと、あまりわかっていませんが、ASP.NET MVCで開発しています。

WebFormのPostBackが恋しい今日この頃

 

最近よくあるのですが、ModelStateが更新されない。

どうしたもんかと思います。

 

多分、何かしらのエラーがあるからだと思いますが、ModelState.Clear()をしたくないです。

InputValidationあたりかと思いますが、どうしたもんでしょうか。

誰かおしえてください