VS2017 open xamarin project hangs – Preparing solution

Error: VS2017 open xamarin project hangs – Preparing solution

Solution:

  • Update VS 2017 bản mới
  • Nếu vẫn còn lỗi, repair lại VS2017

Fixed.

Advertisements

Asp.Net MVC Identity without email

Đôi khi chúng ta không dùng đến trường email trong đăng ký người dùng, mặc định trường này bắt buộc phải nhập và UNIQUE trong Asp.Net MVC Identity.

Để cho phép người dùng đăng ký tài khoản không dùng đến địa chỉ email, bạn làm cách sau:

Mở IdentityConfig.cs và thay đổi giá trị thiết lập RequireUniqueEmail = false theo dưới đây

public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context) 
 {
 var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>()));
 // Configure validation logic for usernames
 manager.UserValidator = new UserValidator<ApplicationUser>(manager)
 {
 AllowOnlyAlphanumericUserNames = false,
 RequireUniqueEmail = false
 };
...

Lưu lại và chạy kiểm tra kết quả.

 

AdminLTE template

Bài này hướng dẫn cách dùng AdminLTE tích hợp vào MVC Project

  1. Tạo project mới, chọn template ASP.NET MVC
  2. NugetPackage -> install WebHelpers.MVC5
  3. Chép các file trong thư mục Contents từ mẫu AdminLTE qua project ASP.NET MVC
  4. Thiết lập bundle css, js

Hope this help

CKEditor 4 và CFinder 3 – PHP

Hướng dẫn cài đặt CKEditor 4 và Cfinder 3

  • Tải CKEditor, CKFinder ở 2 link sau

https://ckeditor.com/ckeditor-4/
https://ckeditor.com/ckeditor-4/download/#ckfinder (3.4.2)

  • Giải nén và chép ckeditor, cfinfer vào thư mục gốc của website (web root folder)
  • Cấu hình cfinder tích hợp với ckeditor

Thay đổi $config[‘authentication’] file config.php nằm trong thư mục cfinder như sau

$config[‘authentication’] = function () {
return true; // FALSE -> TRUE
};

  • Add CKEditor vào trang web

src=”ckeditor/ckeditor.js”>
src=”ckfinder/ckfinder.js” type=”text/javascript”>

Thành phần TEXT EDITOR //TextArea
<textarea name=”editor1″ id=”editor1″ rows=”10″ cols=”80″>
This is my textarea to be replaced with CKEditor.
</textarea>
//Script for CKEditor

// Replace the with a CKEditor
// instance, using default configuration.
var editor = CKEDITOR.replace( ‘editor1’, {
filebrowserBrowseUrl: ‘ckfinder/ckfinder.html’,
filebrowserImageBrowseUrl: ‘ckfinder/ckfinder.html?type=Images’,
filebrowserFlashBrowseUrl: ‘ckfinder/ckfinder.html?type=Flash’,
filebrowserUploadUrl: ‘ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files’,
filebrowserImageUploadUrl: ‘ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images’,
filebrowserFlashUploadUrl: ‘ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash’
});
CKFinder.setupCKEditor( editor, {
skin: ‘jquery-mobile’,
swatch: ‘b’,
onInit: function( finder ) {
finder.on( ‘files:choose’, function( evt ) {
var file = evt.data.files.first();
console.log( ‘Selected: ‘ + file.get( ‘name’ ) );
} );
}
} );

 

Aggregation vs Composition relationship

Qua bài này sẽ minh họa sự khác nhau giữa 2 loại quan hệ trong thiết kế hướng đối tượng và minh họa rõ sự khác biệt khi cài đặt trong code

Aggregation

Aggregation là mối quan hệ mà ở đó thực thể có thể tồn tại độc lập với các lớp khác. Ví dụ: một người nào đó có thể thuộc một công ty hoặc không thuộc một công ty, người đó vẫn có thể tồn tại độc lập, có nghĩa là họ không làm cho một công ty bất kỳ.

Composition

Composition đề cập đến trường hợp khi một đối tượng (obj1) tồn tại phụ thuộc vào sự tồn tại của một đối tượng khác(obj2). Có nghĩa rằng, nếu đối tượng được phụ thuộc obj2 tồn tại thì đối tượng obj1 mới có thể tồn tại.

Cài đặt mã khi viết chương trình biểu diễn mối quan hệ Aggregation

public class Subject {
   private String name;
   public void setName(String name)
   {
     this.name = name;
   }
   public String getName()
   {
     return name;
   }
 }
 
 public class Student {
   private Subject[] studyAreas = new Subject[10];
   //the rest of the Student class
 } 

Cài đặt mã khi viết chương trình biểu diễn mối quan hệ Composition

public class Job {
    private String role;
    private long salary;
    private int id;
        
    public String getRole() {
        return role;
    }
    public void setRole(String role) {
        this.role = role;
    }
    public long getSalary() {
        return salary;
    }
    public void setSalary(long salary) {
        this.salary = salary;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
}
public class Person {
    //composition has-a relationship
    private Job job; 
    public Person(){
        this.job=new Job();
        job.setSalary(1000L);
    }
    public long getSalary() {
        return job.getSalary();
    }
}

Source: internet

Host không hỗ trợ Friendly Url

Lỗi:

Khi ASP.NET Web server không hỗ trợ chế độ FriendlyUrl

Khắc phục:

Comment tất cả các dòng trong RegisterRoutes(…) phương thức của lớp RouteConfig.cs

public static class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
//var settings = new FriendlyUrlSettings();
//settings.AutoRedirectMode = RedirectMode.Permanent;
//routes.EnableFriendlyUrls(settings);
}
}