2014年4月27日 星期日

[MVC] sample傳檔案、XML、MP4、JSON

in controller


        // GET: /Home/RedirDemo
        public ActionResult RedirDemo()
        {
            //連結
            return RedirectToAction("Index");
        }

        // GET: /Home/ContentDemo
        public ActionResult ContentDemo()
        {
            //傳XML
            return Content("<xml>xml demo</xml>", "text/xml");
        }

        public ActionResult FileContentDemo()
        {
            string path = Server.MapPath("~/contents/customers.xml");
            TextReader reader = new StreamReader(path);
            string output = reader.ReadToEnd();

            //傳檔案
            return Content(output, "text/xml");
        }

        public ActionResult GetVideo()
        {
            //MP4
            return File("~/contents/movie.mp4","video/mp4");  
        }

        public ActionResult JsonDemo()
        {
            //傳JSON
            return Json(new { name = "mark", age = 22 },
                JsonRequestBehavior.AllowGet);
        }

[.NET] connectionString 連線字串 - Entity

connectionString 連線字串

metadata=res://*/Models.TestModel.csdl|res://*/Models.TestModel.ssdl|res://*/Models.TestModel.msl;
provider=System.Data.SqlClient;
provider connection string=&quot;
data source=.; //資料庫IP
initial catalog=TestDB; //預設資料庫名稱
persist security info=True; //是否隱藏密碼
user id=XXXXXXXX; //資料庫ID
password=**********; //資料庫密碼
MultipleActiveResultSets=True; //啟用多重作用結果集??????
App=EntityFramework&quot;





http://msdn.microsoft.com/zh-tw/library/cc716756(v=vs.110).aspx
http://blog.miniasp.com/post/2009/07/17/SQL-Connection-String-Persist-Security-Info-Explained.aspx
http://msdn.microsoft.com/zh-tw/library/h32h3abf(v=vs.110).aspx

[Razer] foreach in Model Sample




@model IEnumerable<_01_model.Models.Opera>


        <table border="1">
            <tr>
                <th>@Html.DisplayNameFor(m => m.Title)</th>
                <th>@Html.DisplayNameFor(m => m.Year)</th>
                <th>@Html.DisplayNameFor(m => m.Composer)</th>
            </tr>
            @foreach (var item in Model)
            {
                <tr>
                    <td>@Html.DisplayFor(mi => item.Title)</td>
                    <td>@Html.DisplayFor(mi => item.Year)</td>
                    <td>@Html.DisplayFor(mi => item.Composer)</td>
                </tr>
            }
        </table>

[C#] 何謂泛型

from http://www.cnblogs.com/zhili/archive/2012/11/03/GenericType.html

    在生活中,我們經常會看到模子,像我們平常生活中用的桶子就是一個模子,我們可以用桶子裝水,也可以用來裝油,牛奶等等,然而把這些都裝進桶子裡面之後,它們都會具有桶的形狀(水,牛奶和油本來是沒有形的),即具有模子的特徵。

     同樣,泛型也是像桶子一樣的模子,我們可以用int類型,string類型,類去實例化泛型,實例化之後int,string類型都會具有泛型類型的特徵(就是說可以使用泛型類型中定義的方法,如List<T>泛型,如果用int去初始化它後,List<int>的實例就可以用List<T>泛型中定義的所有方法,用string去初始化它也一樣,和我們生活中的用桶裝水,牛奶,油等非常類似)

[MVC] 未包含 'GetEnumerator' 的公用定義


使用
@foreach (var oCompany in Model)

在view中發生「....未包含 'GetEnumerator' 的公用定義....」的錯誤




這時候在最上面的model宣告要增加IEnumerable

變成 @model IEnumerable<_01_model.Models.CompanyMain>

[MVC] ADO.NET - DBcontext撈資料的用法


用ADO.NET與資料庫連線,產生DBcontext,在controoller撈資料的語法


        //LinQ
        public ActionResult Details(int? CM_PKey)
        {
            List<CompanyMain> query = (from c in context.CompanyMains
                                       where c.CM_PKey == CM_PKey
                                        select c).Take(1).ToList();
            return View(query[0]);
        }
     


        //SqlQuery
        public ActionResult Details(int? CM_PKey)
        {
            List<CompanyMain> liCompanyMain = context.CompanyMains.SqlQuery(
                                    @"select * from CompanyMain Where CM_PKey IN ({0})", CM_PKey.ToString()).ToList();
         
            return View(liCompanyMain[0]);
        }
     

        //FirstOrDefault
        public ActionResult Details(string sPermID)
        {
            CompanyMain oCompanyMain = context.CompanyMains.FirstOrDefault<CompanyMain>(o => o.CM_PermID == sPermID);

            return View(oCompanyMain);
        }
     

     
        //Find
        public ActionResult Details(int? CM_PKey)
        {

            CompanyMain oCompanyMain = context.CompanyMains.Find(CM_PKey);
            if (oCompanyMain == null)
                return HttpNotFound();

            return View(oCompanyMain);

        }
     

        //Join View
        public ActionResult DetailsCompanyOpera(int id)
        {
            List<ViewCompanyMainOpera> liViewCompanyMainOpera = context.ViewCompanyMainOperas.SqlQuery(
                                    @"select * from ViewCompanyMainOpera Where CM_PKey IN ({0})", id.ToString()).ToList();

            return View(liViewCompanyMainOpera[0]);
        }




2014年4月25日 星期五

[MVC] Code First 定義資料model 常用的屬性設定

參考
http://www.dotblogs.com.tw/mrsunboss/archive/2013/01/03/86688.aspx#errormessage




    [Table("Operas")]   //資料表名稱
    public class Opera
    {
        //在 EF Code First中,如果把屬性設為Id且型別設為int,會自動識別出這個欄位就是主索引鍵,
        //但如果你想要把屬性名稱自行命名例如uid,就必須告宣告這個是主索引鍵。
        [Key]
        [DisplayName("編號")]
        public int OperaId { get; set; }


        [MaxLength(100)]    //最大長度
        [MinLength(1)]      //最小長度
        [Required(ErrorMessage = "歌劇名稱不可以為空白")] //宣告必填欄位(NOT NULL)
        [DisplayName("歌劇名稱")]   //顯示欄位的名稱
        public string Title { get; set; }

        [EmailAddress]  //驗證mail格式
        [DisplayName("Mail")]
        public string Email { get; set; }

        [Url]   //網址格式驗證
        public string BlogUrl { get; set; }

        [DisplayName( "年代" )]
        [Range(1600, 2100, ErrorMessage = "範圍值為1600 ~ 2100")]
        public int Year { get; set; }

        [Required]
        [DisplayName("作者")]
        public string Composer { get; set; }
    }






























2014年4月24日 星期四

[C#] 預防SQL隱碼攻擊函式


form: http://www.dotblogs.com.tw/shinyo.her/archive/2010/08/20/17326.aspx



預防SQL隱碼攻擊函式


// CheckSQL() 檢查字串中有 SQL 隱碼攻擊的字串 「'」「;」「--」「|」「\t」「\n」
public bool CheckSQL(string sSQL)
{
bool bSafe = false;

if (sSQL == null)
bSafe = true;
else
{
bSafe = (  (sSQL.IndexOf("'")  >= 1 )
|| (sSQL.IndexOf(" ")  >= 1 )
|| (sSQL.IndexOf(";")  >= 1 )
|| (sSQL.IndexOf("--") >= 1 )
|| (sSQL.IndexOf("|")  >= 1 )
|| (sSQL.IndexOf("\t") >= 1 )
|| (sSQL.IndexOf("\n") >= 1 )
|| (sSQL.ToUpper().IndexOf("SELECT") >= 1 )
|| (sSQL.ToUpper().IndexOf("UPDATE") >= 1 )
|| (sSQL.ToUpper().IndexOf("DELETE") >= 1 )
|| (sSQL.ToUpper().IndexOf("CREATE") >= 1 )
);
}

return bSafe;
}



2014年4月20日 星期日

javascript - 解除封鎖右鍵

(function() {
var doc = document;
var body = doc.body;
var html = doc.documentElement;
html.onselectstart = html.oncopy = html.oncut = html.onpaste = html.onkeydown = html.oncontextmenu = html.onmousemove = body.oncopy = body.oncut = body.onpaste = body.onkeydown = body.oncontextmenu = body.onmousemove = body.onselectstart = body.ondragstart = doc.onselectstart = doc.oncopy = doc.oncut = doc.onpaste = doc.onkeydown = doc.oncontextmenu = doc.onmousedown = doc.onmouseup = null;
body.style.webkitUserSelect = 'auto';

function defaultHandler(event) {
event.returnValue = true;
}
for (event_type in ['selectstart', 'copy', 'cut', 'paste', 'keydown', 'contextmenu', 'dragstart']) {
html.addEventListener(event_type, defaultHandler);
body.addEventListener(event_type, defaultHandler);
doc.addEventListener(event_type, defaultHandler);
}

var jQuery = window.jQuery;
if (jQuery) {
jQuery(doc).unbind();
jQuery(body).unbind();
}

var $Fn = window.$Fn;
if ($Fn) {
try {
$Fn.freeElement(doc);
$Fn.freeElement(body);
} catch (e) {}
}

var jindo = window.jindo;
if (jindo) {
jindo.$A = null;
}

})();


---------------------------------------------------------

減肥版

(function() {var doc = document;var body = doc.body;var html = doc.documentElement;html.onselectstart = html.oncopy = html.oncut = html.onpaste = html.onkeydown = html.oncontextmenu = html.onmousemove = body.oncopy = body.oncut = body.onpaste = body.onkeydown = body.oncontextmenu = body.onmousemove = body.onselectstart = body.ondragstart = doc.onselectstart = doc.oncopy = doc.oncut = doc.onpaste = doc.onkeydown = doc.oncontextmenu = doc.onmousedown = doc.onmouseup = null;body.style.webkitUserSelect = 'auto';function defaultHandler(event) { event.returnValue = true;}for (event_type in ['selectstart', 'copy', 'cut', 'paste', 'keydown', 'contextmenu', 'dragstart']) { html.addEventListener(event_type, defaultHandler); body.addEventListener(event_type, defaultHandler); doc.addEventListener(event_type, defaultHandler);}var jQuery = window.jQuery;if (jQuery) { jQuery(doc).unbind(); jQuery(body).unbind();}var $Fn = window.$Fn;if ($Fn) { try { $Fn.freeElement(doc); $Fn.freeElement(body); } catch (e) {}}var jindo = window.jindo;if (jindo) {jindo.$A = null;}})();

2014年4月8日 星期二

[CSS] 讓pre標籤內的程式碼自動換行



FORM:http://www.jb51.net/web/16815.html


文字換行
word-break:break-all


限制寬度
max-width: 250px;


特殊標籤<pre> 換行方式
pre {
  white-space: pre-wrap; /* css-3 */
  white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
  white-space: -pre-wrap; /* Opera 4-6 */
  white-space: -o-pre-wrap; /* Opera 7 */
  word-wrap: break-word; /* Internet Explorer 5.5+ */
}
 

MangoHost Copyright © 2009 Cookiez is Designed by Ipietoon for Free Blogger Template