วันจันทร์ที่ 6 กรกฎาคม พ.ศ. 2558

ASP.NET การใช้งาน AutoMapper

AutoMapper ช่วยเราในการ Map Model จาก Repository เข้ากับ Service
เราไม่ต้อง foreach เองในกรณีที่ส่งมาเป็น List<>

ขั้นตอนการทำงาน
1. ไปที่ folder Service แล้วสร้าง folderตามชื่อ Service จากนั้นสร้างไฟล์ ชื่อService+Mappper
2. ใส่ using AutoMapper;
3 ตัวอย่าง     public static class TestMapper
    {
//กรณี Model ที่เป็น List
        public static List<ชื่อ Model ใน Service> To+ชื่อ Model ใน Service(this List<ชื่อ model ที่ส่งมาจาก Repository> entities)
        {
            return Mapper.Map<List<ชื่อ Model ใน Service>>(entities) ?? new List<ScheduleMemberInGroupViewModel>();
        }
 ***** ?? new List<ScheduleMemberInGroupViewModel>(); แปลว่ากรณีที่ไม่มีข้อมูลใน Return Model List<ScheduleMemberInGroupViewModel> เปล่าๆกลับไป ****

//กรณี Model ที่ไม่ได้เป็น List
        public static ScheduleMemberInGroupViewModel  ToTestViewModel(this UserInCompanies entities)
        {
            return Mapper.Map<ScheduleMemberInGroupViewModel>(entities) ?? new  ScheduleMemberInGroupViewModel;
        }
    }
4. ไปที่ Project Web ->App_Start->AutoMapperConfig
    public partial class AutoMapperConfig
    {
        public static void RegisteredAutoMapper()
        {
            ControllerAutoMapperBootstrapper.Configure();

            Mapper.CreateMap<ชื่อ model ที่ส่งมาจาก Repository, ชื่อ Model ใน Service>();
        }
     }
5. สร้าง Model ใน Service ต้องตั้งชื่อตัวแปรให้ตรงกับ Model ที่ส่งมาจาก Repo ด้วยนะไม่งั้นมัน Map ไม่ได้จะเออเร่อ
6. การใช้งาน
    .Toชื่อMapper ที่เราจะ Map ระวังว่าต้อง type ตรงกับที่เราMapด้วยนะ
7. เปิดหน้าที่เราจะใช้ Mapper แล้วพิมพ์ using Pathที่เราเก็บ ชื่อMapper ไว้                                          ถ้าไม่พิมมันจะหาไม่เจอโง่ชิบหายเลย

วันเสาร์ที่ 27 มิถุนายน พ.ศ. 2558

วันศุกร์ที่ 19 มิถุนายน พ.ศ. 2558

การใช้งาน Yii2 url แบบไม่ต้องมี index.php

1.เปิดใน config->web.php เพิ่ม

'urlManager' => [
    'enablePrettyUrl' => true,    'showScriptName'=>false,// hide index.php    'rules' => [
        'หน้าแรก' => 'site/index',    ]
],
 ในส่วนของ 'components' จะได้ตามรูปล่างนะ

2. เข้าไปที่ folder web จากนั้นก็ สร้างไฟล์ .htaccess แล้วพิมตามโลด

RewriteEngine on # if a directory or a file exists, use it directlyRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-d # otherwise forward it to index.phpRewriteRule . index.php 


 เท่านี้เวลาเราสร้าง controller แล้วเรียก funtion จะเป็นแบบนี้

localhost/webname/web/controllerName/functionName







วันพฤหัสบดีที่ 11 มิถุนายน พ.ศ. 2558

การใช้งาน ASP.NET แบบ Run เว็บได้แม้ปิด Debug Mode

คือ Run Web ค้างไว้ แล้วสามารถแก้ไขโคดได้ด้วยใน Controller  Service

1. ไปที่ Project MVC ของเรา แล้ว คลิกขวาเลือก Properties

2. เลือก Web ด้านซ้ายมือ 


3. ติ๊ก Enable Edit and Continue ออกให้ เหลือแต่ช่องล่าง

แล้วรันใหม่ แค่นี้กะใช้ได้ละ

ASP.net API การรับข้อมูล method Get ที่มี parameter ซ้อนอยู่ข้างในอีกที

    API Controller 
  [HttpGet]
        public void test([FromUri]TestModel model)
        {

        }

 Model
public class TestModel
{
     public Guid Key{get;set;}
}

เวลาเรียกใช้งาน

pathAPI/test?key=B912D178-DE60-4C69-AA8E-2B2714F96FDB


***เมตหาย
ถ้ามี Model ใหญ่ ครอบตัวแปรเราอีกที่ต้องมี [FromUri] ด้วยเสมอไม่ง้านมันหาไม่เจอ
ถ้าเรารับพารามิเตอเป็น Guid ก็ส่งต้องค่าเป็น guid แม้จะส่งเป็นสตริงก็ตาม คือจำนวนตัวอักษรต้องเท่ากับ Guid

วันจันทร์ที่ 8 มิถุนายน พ.ศ. 2558

การใช้งาน getApplication(); ใน Fragment

ผมเจอปัญหานี้จากการใช้งาน GreenDao Database ใน Fragment ครับ

ใน Activity

GreenDaoApplication mApplication;
mApplication = (GreenDaoApplication ) getAplication();

ถ้าจะใช้ใน Fragment

GreenDaoApplication mApplication;
mApplication = (GreenDaoApplication ) getActivity().getAplication();

แค่นี้เองครับ ง่ายเว่ออ

วันเสาร์ที่ 28 มีนาคม พ.ศ. 2558

Angular js การใช้งาน ng-init

ng-init
เป็นการสั่งให้ ทำก่อนเป็นอันดับหลังจาก load ทุกอย่างเสร็จ
เช่น

<div ng-app="app">
<div ng-controller="FirstController" ng-init="Init()" >
<div>
</div>

<script>
var app = angular.module("app",[]);
app.controller('FirstController',function($scope)
{
   $scope.Init = function(){
      alert("Test");
   }
});
</script>

เมื่อรัน page เสร็จ angular จะเริ่มสั่งให้ function  Init() ทำงานโดยการแสดง alert ที่แสดงคำว่า "Test" ให้เราเห็นครับ