ASP.NET MVC自己総括の便利な開発例

20662 ワード

前言
仕事がこんなに长くなって、ASP.NET MVCに接触してもう长くなって、ずっとそのいくつかの実用的な、よく使ういくつかの技巧を総括したいと思って、しかしずっと怠け者で、総括したくないので、ずっとよく书いていないで、今このような意気込みがあるうちに、それでは先にそれを书きます.
以下はすべて私にとって、比較的に便利なコードだと思って、もちろん、私の書いたものは必ずしもすべての人に適しているとは限らないが、少なくとも中にはいくつかの比較的簡単で実用的な技巧がある.
例は主に参照  http://www.cnblogs.com/duanshuiliu/tag/ASP.NET/  MVCには大切なものやよく使われるものがたくさん紹介されています
コード#コード#
他の人の例を見ながら、私の仕事で何か問題があったり、テクニックを使ったりしたので、以下のコードに組み合わせました.
まず、次のエンティティークラスを作成します.
    public partial class Person
    {
        [Display(Name = "     ID")]
        public int PersonId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public DateTime BirthDate { get; set; }
        public Address HomeAddress { get; set; }
        public bool IsHappy { get; set; }
        public Role Role { get; set; }
        public string Color { get; set; }
        public List<Relative> relatvie { get; set; }
    }

    public class Address
    {
        public string City { get; set; }
        public string Country { get; set; }
    }

    public class Relative
    {
        public string Name { get; set; }
        public string RelativeAge { get; set; }
    }

    public enum Role
    {
        Admin = 1,
        User = 2,
        Guest = 3
    }

Personクラスは主なクラスで、stringタイプintタイプDateTimeタイプ参照タイプ列挙タイプと集合タイプが含まれています. のプロパティは、実際の作業では、これらのタイプに頻繁に遭遇し、フロントバックグラウンドと組み合わせてデータを受信する必要があります.
 
以下は制御中のコードです
        public ActionResult StrongModelView(Person person)
        {
person.PersonId
= 123; // if (string.IsNullOrWhiteSpace(person.FirstName)) { ModelState.AddModelError("FirstName", " FirstName"); }
       //
if (ModelState.IsValid) { // , } else { // } Dictionary<string, int> dic = new Dictionary<string, int>(); foreach (int myCode in Enum.GetValues(typeof(Role)))// { string strName = Enum.GetName(typeof(Role), myCode);// dic.Add(strName, myCode); } // SelectList sel = new SelectList(dic, "Value", "Key");// ViewData["sel"] = sel; //RadioButton List<string> colors = new List<string>() { "Red", "Green", "Blue" }; ViewData["colors"] = colors; return View(person); }

 
以下はRazorビューのコードです
    @using (Html.BeginForm("StrongModelView", "home", FormMethod.Post))//
    {
        //         
        @Html.ValidationSummary()//<div>
            <table>
                <tr>
                    <td>@Html.LabelFor(c => c.PersonId)</td>//
                    <td>@Html.DisplayFor(c => c.PersonId)</td>//
                </tr>
                <tr>
                    <td>FirstName</td>
                    <td>@Html.EditorFor(c => c.FirstName)</td>//
                </tr>
                <tr>
                    <td>LastName</td>
                    <td>@Html.TextBoxFor(c => c.LastName)</td>


                </tr>
                <tr>
                    <td>BirthDate</td>
                    <td>@Html.EditorFor(c => c.BirthDate)</td>//
                </tr>
                <tr>
                    <td>IsHappy</td>
                    <td>@Html.EditorFor(c => c.IsHappy)</td>//
                </tr>
                <tr>
                    <td>Color</td>
                    <td>@{
        List<string> colorss = ViewData["colors"] as List<string>;
        foreach (var item in colorss)
        {
                        @item;
                        @Html.RadioButtonFor(c => c.Color, item);//
        }
                    }

                    </td>
                </tr>
                <tr>
                    <td>Role</td>
                    <td>@Html.DropDownListFor(c => c.Role, ViewData["sel"] as SelectList)</td>//
                </tr>

                <tr style="background-color: #0094ff;">
                    <td>  </td>
                    <td>@Html.Editor("relatvie[0].RelativeAge")@Html.Editor("relatvie[0].Name")</td>//
                </tr>

                <tr>
                    <td>
                        <input type="submit" value="  " /></td>
                </tr>
            </table>

        </div>

    }

 
よく使われるレコードまたは重要なレコード
①モデルにエラーを追加した状態で、フロントでエラーメッセージを使用して受信した場合に役立ちます.そうでなければ、当社のように直接TempData[「message」]を使用してエラーメッセージを含むすべてのメッセージを返すなど、何の役にも立たないと思います.
②モデルバインドが通過した場合.trueとなり,バインドできないモデルがあればfalseを返す.
③列挙の方法をたどると、この方法は多くの場合に使われるはずなので、記録しておきます
④フロントでdropdownListを受信する場合は、selectListというクラスを使用し、1つの辞書が最もkey/valueで表されていることを伝える必要があります.そして、辞書がselectListに対応するのは「Key」、「Value」で、すべて大文字で始まるはずです.(他のIEnumbleタイプの集合も送信できます)
⑤Razorビューを利用してフォームを作成していますが、個人的には普通のhtmlで作成した表現の速度と同じだと思います.
⑥actionメソッドでモデルを検証し、エラーメッセージを返した場合、ValidationSummaryを使ってエラー表示を行うことができ、ulを生成して表示するので、個人的には何の役にも立たないと思います
⑦HTML.Labal()はそのフィールドの名前のみを表示します.強いタイプのビューのこのクラスの属性にDisplay(Name=「xxx」)のラベルを追加しない限り、フィールドの名前のみを表示します.
⑧HTML.Display()はフィールドに対応するvalue値を表示
 ⑨EditorForは、返されるタイプに応じて対応するinputタグを生成し、生成したNameとIDはフィールド名に対応しています.例えばbool型はcheckboxを生成し、datetmeはdatetime型を生成します
➊主にradio buttonのリストをどのように表示するか、主に同じnameで構成されているので、選択したものを提出します.
⑪主にバックエンドから1つのselectListを返し、フロントエンドで対応するselectListを受信するこのselectListがリストを構成するオプションです
⑴バックエンドでリストを直接受信する必要がある場合があります.この場合、インデックスを使用して受信する必要があります.
雑多な総括
  • 入力条件に直接基づいてクエリーを行う場合はgetリクエストを使用し、データを加工する場合はpostリクエストを使用し、getリクエストは主にページに戻るので、クエリーが相対的に合理的である場合は
  • である.
  • パスに対する操作:1.URL.Action()生成の/home/indexのようなパスですが、HTML.ActionLink()はaタグを生成します.HTMLが付いているので、実はhtmlのヘルプ関数
  • です.
     
    に感銘を与える
    初めてブログを书きます..感じは书くのがめちゃくちゃで、各种のエディタは使うことができなくて、各种のレイアウトは使うことができなくて、実はブログを书くのは主に自分のいくつか出会った问题を记录して、および使う技巧、多くのものはすべて私の个人に対してだけで、だから时にはどうしても他の人に见て分からないことができて、许してください.