MVC字串處理及MVC@RenderSection小計

天才小龍發表於2019-05-11

   最近悟出來一個道理,在這兒分享給大家:學歷代表你的過去,能力代表你的現在,學習代表你的將來。

   十年河東十年河西,莫欺少年窮

   學無止境,精益求精

   最近在做自學MVC,遇到的問題很多,索性一點點總結下。

   新建一個非空的MVC專案,我們在檢視_Layout.cshtml時,會發現@RenderSection(),@Styles.Render()等標籤,那麼這些標籤的作用是什麼呢?

   _Layout.cshtml 程式碼如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="apple-mobile-web-app-title" content="">
    <meta name="format-detection" content="telephone=no">
    <meta id="viewport" name="viewport" content="width=750px,minimum-scale=0.5,maximum-scale=5,user-scalable=no" />
    <title>@ViewBag.Title</title>
    <!--用於在App_Start/BundleConfig.cs中繫結系統所需的通用CSS-->
    @Styles.Render("~/Content/css")
    <!--用於子頁面中繫結特有CSS-->
    <!--在子頁面中用法:@section css{<link href="~/Content/login.css" rel="stylesheet" />}-->
    @RenderSection("css", required: false)
</head>
<body>
    <!--Body標籤中所含的HTML指令碼,如:<Form></Form>-->
    @RenderBody()
    <!--用於在App_Start/BundleConfig.cs中繫結系統所需的通用JS、Jquery-->
    @Scripts.Render("~/bundles/jquery")
    <!--用於子頁面中繫結特有JS、JQuery-->
    <!--在子頁面中用法:@section script{<script href="~/Content/login.js"></script>}-->
    @RenderSection("scripts", required: false)
</body>
</html>

   子頁面中設定特定的CSS或JS

@{
    ViewBag.Title = "登入";
}
@section css
{
    <link href="~/Content/login.css" rel="stylesheet" />
}

   BundleConfig.cs 中程式碼如下

    public class BundleConfig
    {
        // 有關 Bundling 的詳細資訊,請訪問 http://go.microsoft.com/fwlink/?LinkId=254725
        public static void RegisterBundles(BundleCollection bundles)
        {
            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                        "~/Scripts/jquery-1.11.1.min.js",
                        "~/Scripts/TouchSlide.1.1.js",
                         "~/Scripts/jquery.Slide.js",
                          "~/Scripts/jquery.inputbox.js"));

            bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/common.css"));

            
        }
    }

   以上便是上述標籤的用法,好記性不如爛筆頭,索性記錄下來

   補充(2016-11-13)

   C#字串處理的過程中經常會碰到中英文數字等組合的字串,其中中文字元每個站位為2,英文 數字等站位為1,在擷取的過程中不好處理,下面來介紹一種處理中英文字元混合的方法,如下:

#region 擷取字元長度 static string CutString(string str, int len)
        /// <summary>
        /// 擷取字元長度
        /// </summary>
        /// <param name="str">被擷取的字串</param>
        /// <param name="len">所擷取的長度</param>
        /// <returns>子字串</returns>
        public static string CutString(string str, int len)
        {
            if (str == null || str.Length == 0 || len <= 0)
            {
                return string.Empty;
            }

            int l = str.Length;


            #region 計算長度
            int clen = 0;
            while (clen < len && clen < l)
            {
                //每遇到一箇中文,則將目標長度減一。
                if ((int)str[clen] > 128) { len--; }
                clen++;
            }
            #endregion

            if (clen < l)
            {
                return str.Substring(0, clen) + "...";
            }
            else
            {
                return str;
            }
        }

        /// <summary>
        /// //擷取字串中文 字母
        /// </summary>
        /// <param name="content">源字串</param>
        /// <param name="length">擷取長度!</param>
        /// <returns></returns>
        public static string SubTrueString(object content, int length)
        {
            string strContent = NoHTML(content.ToString());

            bool isConvert = false;
            int splitLength = 0;
            int currLength = 0;
            int code = 0;
            int chfrom = Convert.ToInt32("4e00", 16);    //範圍(0x4e00~0x9fff)轉換成int(chfrom~chend)
            int chend = Convert.ToInt32("9fff", 16);
            for (int i = 0; i < strContent.Length; i++)
            {
                code = Char.ConvertToUtf32(strContent, i);
                if (code >= chfrom && code <= chend)
                {
                    currLength += 2; //中文
                }
                else
                {
                    currLength += 1;//非中文
                }
                splitLength = i + 1;
                if (currLength >= length)
                {
                    isConvert = true;
                    break;
                }
            }
            if (isConvert)
            {
                return strContent.Substring(0, splitLength);
            }
            else
            {
                return strContent;
            }
        }

        public static int GetStringLenth(object content)//獲取混合字串長度,根據長度進行長度/前2...後2等方式擷取
        {
            string strContent = NoHTML(content.ToString());
            int currLength = 0;
            int code = 0;
            int chfrom = Convert.ToInt32("4e00", 16);    //範圍(0x4e00~0x9fff)轉換成int(chfrom~chend)
            int chend = Convert.ToInt32("9fff", 16);
            for (int i = 0; i < strContent.Length; i++)
            {
                code = Char.ConvertToUtf32(strContent, i);
                if (code >= chfrom && code <= chend)
                {
                    currLength += 2; //中文
                }
                else
                {
                    currLength += 1;//非中文
                }
               
            }
            return currLength;
        }
        #endregion

   @陳臥龍的部落格

   


相關文章