بررسی روش آپلود فایلها در ASP.NET Core
مدیریت سفارشی سطوح دسترسی کاربران در MVC
EF Code First #12
از طریق برنامه نویسی چطور میشه آی پی کلایت رو که به اینترنت اتصل داره رو پیدا کرد.
ممنون از بابت سوالهای قبلی
bower install angular-route --save
<script src="bower_components/angular-route/angular-route.min.js" type="text/javascript"></script>
<div class="col-md-9"> <ng-view></ng-view> </div>
model.panel = { title: "Panel Title", items: [ { title: "Home", url: "#/home" }, { title: "Articles", url: "#/articles" }, { title: "Authors", url: "#/authors" } ] };
var module = angular.module("dntModule", ["ngRoute"]);
module.config(function ($routeProvider) { $routeProvider .when("/home", { template: "<app-home></app-home>" }) .when("/articles", { template: "<app-articles></app-articles>" }) .when("/authors", { template: "<app-authors></app-authors>" }) .otherwise({ redirectTo: "/home" }); });
module.component("appHome", { template: ` <hr><div> <div>Panel heading = HomePage</div> <div> HomePage </div> </div>` }); module.component("appArticles", { template: ` <hr><div> <div>Panel heading = Articles</div> <div> Articles </div> </div>` }); module.component("appAuthors", { template: ` <hr><div> <div>Panel heading = Authors</div> <div> Authors </div> </div>` });
اکنون توسط لینکهای تعریف شده میتوانیم به راحتی درون تمپلیتها، پیمایش کنیم. همانطور که عنوان شد تا اینجا مسیریاب پیشفرض Angular هیچ اطلاعی از کامپوننتها ندارد؛ بلکه آنها را با کمک template، به صورت غیر مستقیم، درون صفحه نمایش دادهایم.
معرفی Component Router
مزیت این روتر این است که به صورت اختصاصی برای کار با کامپوننتها طراحی شده است. بنابراین دیگر نیازی به استفاده از template درون route configuration نیست. برای استفاده از این روتر ابتدا باید پکیج آن را نصب کنیم:
bower install angular-component-router --save
سپس وابستگی فوق را با روتر پیشفرضی که در مثال قبل بررسی کردیم، جایگزین خواهیم کرد:
<script src="bower_components/angular-component-router/angular_1_router.js"></script>
همچنین درون فایل module.js به جای وابستگی ngRoute از ngComponentrouter استفاده خواهیم کرد:
var module = angular.module("dntModule", ["ngComponentRouter"]);
در ادامه به جای تمامی route configurations قبلی، اینبار یک کامپوننت جدید را به صورت زیر ایجاد خواهیم کرد:
module.component("appHome", { template: ` <hr> <div> <div>Panel heading = HomePage</div> <div> HomePage </div> </div>` });
همانطور که مشاهده میکنید برای پاسخگویی به تغییرات URL، مقدار routeConfig$ را مقداردهی کردهایم. در اینجا به جای بارگذاری تمپلیت، خود کامپوننت، در هر یک از ruleهای فوق بارگذاری خواهد شد. برای حالت otherwise نیز از سینتکس **/ استفاده کردهایم.
تمپلیت کامپوننت فوق نیز به صورت زیر است:
<div class="container"> <div class="row"> <div class="col-md-3"> <hr> <dnt-widget></dnt-widget> </div> <div class="col-md-9"> <ng-outlet></ng-outlet> </div> </div> </div>
لازم به ذکر است دیگر نباید از دایرکتیو ng-view استفاده کنیم؛ زیرا این دایرکتیو برای استفاده از روتر اصلی طراحی شده است. به جای آن از دایرکتیو ng-outlet استفاده شده است. این کامپوننت به عنوان یک کامپوننت top level عمل خواهد کرد. بنابراین درون صفحهی index.html از کامپوننت فوق استفاده خواهیم کرد:
<html ng-app="dntModule"> <head> <meta charset="UTF-8"> <title>Using Angular 1.5 Component Router</title> <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css"> <link rel="stylesheet" href="bower_components/font-awesome/css/font-awesome.min.css"> </head> <body> <dnt-app></dnt-app> <script src="bower_components/angular/angular.js" type="text/javascript"></script> <script src="bower_components/angular-component-router/angular_1_router.js"></script> <script src="scripts/module.js" type="text/javascript"></script> <script src="scripts/dnt-app.component.js"></script> <script src="scripts/dnt-widget.component.js"></script> </body> </html>
در نهایت باید جهت فعالسازی سیستم مسیریابی جدید، سرویس زیر را همراه با نام کامپوننت فوق ریجستر کنیم:
module.value("$routerRootComponent", "dntApp");
اکنون اگر برنامه را اجرا کنید خواهید دید که همانند قبل، کار خواهد کرد. اما اینبار از روتر جدید و سازگار با کامپوننتها استفاده میکند.
کدهای این قسمت را نیز از اینجا میتوانید دریافت کنید.
<div> <div> <select ></select> </div> </div>
$(document).ready(function () { $('.js-example-basic-single').select2({ data: [ { id: "al", text: "Albania" }, { id: "dz", text: "Algeria" }, { id: "as", text: "American Samoa" }, { id: "ad", text: "Andorra" }, { id: "ao", text: "Angola" }, { id: "ai", text: "Anguilla" }, { id: "ag", text: "Antigua" }, { id: "ar", text: "Argentina" }, { id: "am", text: "Armenia" }, { id: "aw", text: "Aruba" }, { id: "au", text: "Australia" }, { id: "at", text: "Austria" }, { id: "az", text: "Azerbaijan" }, { id: "bs", text: "Bahamas" }, { id: "bh", text: "Bahrain" }, { id: "bd", text: "Bangladesh" }, { id: "bb", text: "Barbados" }, { id: "by", text: "Belarus" }, { id: "be", text: "Belgium" }, { id: "bz", text: "Belize" }, { id: "bj", text: "Benin" }, { id: "bm", text: "Bermuda" }, { id: "bt", text: "Bhutan" }, { id: "bo", text: "Bolivia" }, { id: "ba", text: "Bosnia" }, { id: "bw", text: "Botswana" }, { id: "bv", text: "Bouvet Island" }, { id: "br", text: "Brazil" }, { id: "vg", text: "British Virgin Islands" }, { id: "bn", text: "Brunei" }, { id: "bg", text: "Bulgaria" }, { id: "bf", text: "Burkina Faso" }, { id: "mm", text: "Burma" }, { id: "bi", text: "Burundi" }, { id: "tc", text: "Caicos Islands" }, { id: "kh", text: "Cambodia" }, { id: "cm", text: "Cameroon" }, { id: "ca", text: "Canada" }, { id: "cv", text: "Cape Verde" }, { id: "ky", text: "Cayman Islands" }, { id: "cf", text: "Central African Republic" }, { id: "td", text: "Chad" }, { id: "cl", text: "Chile" }, { id: "cn", text: "China" }, { id: "cx", text: "Christmas Island" }, { id: "cc", text: "Cocos Islands" }, { id: "co", text: "Colombia" }, { id: "km", text: "Comoros" }, { id: "cg", text: "Congo Brazzaville" }, { id: "cd", text: "Congo" }, { id: "ck", text: "Cook Islands" }, { id: "cr", text: "Costa Rica" }, { id: "ci", text: "Cote Divoire" }, { id: "hr", text: "Croatia" }, { id: "cu", text: "Cuba" }, { id: "cy", text: "Cyprus" }, { id: "cz", text: "Czech Republic" }, { id: "dk", text: "Denmark" }, { id: "dj", text: "Djibouti" }, { id: "dm", text: "Dominica" }, { id: "do", text: "Dominican Republic" }, { id: "ec", text: "Ecuador" }, { id: "eg", text: "Egypt" }, { id: "sv", text: "El Salvador" }, { id: "gb", text: "England" }, { id: "gq", text: "Equatorial Guinea" }, { id: "er", text: "Eritrea" }, { id: "ee", text: "Estonia" }, { id: "et", text: "Ethiopia" }, { id: "eu", text: "European Union" }, { id: "fk", text: "Falkland Islands" }, { id: "fo", text: "Faroe Islands" }, { id: "fj", text: "Fiji" }, { id: "fi", text: "Finland" }, { id: "fr", text: "France" }, { id: "gf", text: "French Guiana" }, { id: "pf", text: "French Polynesia" }, { id: "tf", text: "French Territories" }, { id: "ga", text: "Gabon" }, { id: "gm", text: "Gambia" }, { id: "ge", text: "Georgia" }, { id: "de", text: "Germany" }, { id: "gh", text: "Ghana" }, { id: "gi", text: "Gibraltar" }, { id: "gr", text: "Greece" }, { id: "gl", text: "Greenland" }, { id: "gd", text: "Grenada" }, { id: "gp", text: "Guadeloupe" }, { id: "gu", text: "Guam" }, { id: "gt", text: "Guatemala" }, { id: "gw", text: "Guinea-Bissau" }, { id: "gn", text: "Guinea" }, { id: "gy", text: "Guyana" }, { id: "ht", text: "Haiti" }, { id: "hm", text: "Heard Island" }, { id: "hn", text: "Honduras" }, { id: "hk", text: "Hong Kong" }, { id: "hu", text: "Hungary" }, { id: "is", text: "Iceland" }, { id: "in", text: "India" }, { id: "io", text: "Indian Ocean Territory" }, { id: "id", text: "Indonesia" }, { id: "ir", text: "Iran" }, { id: "iq", text: "Iraq" }, { id: "ie", text: "Ireland" }, { id: "il", text: "Israel" }, { id: "it", text: "Italy" }, { id: "jm", text: "Jamaica" }, { id: "jp", text: "Japan" }, { id: "jo", text: "Jordan" }, { id: "kz", text: "Kazakhstan" }, { id: "ke", text: "Kenya" }, { id: "ki", text: "Kiribati" }, { id: "kw", text: "Kuwait" }, { id: "kg", text: "Kyrgyzstan" }, { id: "la", text: "Laos" }, { id: "lv", text: "Latvia" }, { id: "lb", text: "Lebanon" }, { id: "ls", text: "Lesotho" }, { id: "lr", text: "Liberia" }, { id: "ly", text: "Libya" }, { id: "li", text: "Liechtenstein" }, { id: "lt", text: "Lithuania" }, { id: "lu", text: "Luxembourg" }, { id: "mo", text: "Macau" }, { id: "mk", text: "Macedonia" }, { id: "mg", text: "Madagascar" }, { id: "mw", text: "Malawi" }, { id: "my", text: "Malaysia" }, { id: "mv", text: "Maldives" }, { id: "ml", text: "Mali" }, { id: "mt", text: "Malta" }, { id: "mh", text: "Marshall Islands" }, { id: "mq", text: "Martinique" }, { id: "mr", text: "Mauritania" }, { id: "mu", text: "Mauritius" }, { id: "yt", text: "Mayotte" }, { id: "mx", text: "Mexico" }, { id: "fm", text: "Micronesia" }, { id: "md", text: "Moldova" }, { id: "mc", text: "Monaco" }, { id: "mn", text: "Mongolia" }, { id: "me", text: "Montenegro" }, { id: "ms", text: "Montserrat" }, { id: "ma", text: "Morocco" }, { id: "mz", text: "Mozambique" }, { id: "na", text: "Namibia" }, { id: "nr", text: "Nauru" }, { id: "np", text: "Nepal" }, { id: "an", text: "Netherlands Antilles" }, { id: "nl", text: "Netherlands" }, { id: "nc", text: "New Caledonia" }, { id: "pg", text: "New Guinea" }, { id: "nz", text: "New Zealand" }, { id: "ni", text: "Nicaragua" }, { id: "ne", text: "Niger" }, { id: "ng", text: "Nigeria" }, { id: "nu", text: "Niue" }, { id: "nf", text: "Norfolk Island" }, { id: "kp", text: "North Korea" }, { id: "mp", text: "Northern Mariana Islands" }, { id: "no", text: "Norway" }, { id: "om", text: "Oman" }, { id: "pk", text: "Pakistan" }, { id: "pw", text: "Palau" }, { id: "ps", text: "Palestine" }, { id: "pa", text: "Panama" }, { id: "py", text: "Paraguay" }, { id: "pe", text: "Peru" }, { id: "ph", text: "Philippines" }, { id: "pn", text: "Pitcairn Islands" }, { id: "pl", text: "Poland" }, { id: "pt", text: "Portugal" }, { id: "pr", text: "Puerto Rico" }, { id: "qa", text: "Qatar" }, { id: "re", text: "Reunion" }, { id: "ro", text: "Romania" }, { id: "ru", text: "Russia" }, { id: "rw", text: "Rwanda" }, { id: "sh", text: "Saint Helena" }, { id: "kn", text: "Saint Kitts and Nevis" }, { id: "lc", text: "Saint Lucia" }, { id: "pm", text: "Saint Pierre" }, { id: "vc", text: "Saint Vincent" }, { id: "ws", text: "Samoa" }, { id: "sm", text: "San Marino" }, { id: "gs", text: "Sandwich Islands" }, { id: "st", text: "Sao Tome" }, { id: "sa", text: "Saudi Arabia" }, { id: "sn", text: "Senegal" }, { id: "cs", text: "Serbia" }, { id: "rs", text: "Serbia" }, { id: "sc", text: "Seychelles" }, { id: "sl", text: "Sierra Leone" }, { id: "sg", text: "Singapore" }, { id: "sk", text: "Slovakia" }, { id: "si", text: "Slovenia" }, { id: "sb", text: "Solomon Islands" }, { id: "so", text: "Somalia" }, { id: "za", text: "South Africa" }, { id: "kr", text: "South Korea" }, { id: "es", text: "Spain" }, { id: "lk", text: "Sri Lanka" }, { id: "sd", text: "Sudan" }, { id: "sr", text: "Suriname" }, { id: "sj", text: "Svalbard" }, { id: "sz", text: "Swaziland" }, { id: "se", text: "Sweden" }, { id: "ch", text: "Switzerland" }, { id: "sy", text: "Syria" }, { id: "tw", text: "Taiwan" }, { id: "tj", text: "Tajikistan" }, { id: "tz", text: "Tanzania" }, { id: "th", text: "Thailand" }, { id: "tl", text: "Timorleste" }, { id: "tg", text: "Togo" }, { id: "tk", text: "Tokelau" }, { id: "to", text: "Tonga" }, { id: "tt", text: "Trinidad" }, { id: "tn", text: "Tunisia" }, { id: "tr", text: "Turkey" }, { id: "tm", text: "Turkmenistan" }, { id: "tv", text: "Tuvalu" }, { id: "ug", text: "Uganda" }, { id: "ua", text: "Ukraine" }, { id: "ae", text: "United Arab Emirates" }, { id: "us", text: "United States" }, { id: "uy", text: "Uruguay" }, { id: "um", text: "Us Minor Islands" }, { id: "vi", text: "Us Virgin Islands" }, { id: "uz", text: "Uzbekistan" }, { id: "vu", text: "Vanuatu" }, { id: "va", text: "Vatican City" }, { id: "ve", text: "Venezuela" }, { id: "vn", text: "Vietnam" }, { id: "wf", text: "Wallis and Futuna" }, { id: "eh", text: "Western Sahara" }, { id: "ye", text: "Yemen" }, { id: "zm", text: "Zambia" }, { id: "zw", text: "Zimbabwe" } ], placeholder: "کشور مورد نظرتان را انتخاب نمایید", language: "fa", theme: "bootstrap", dir: "rtl", tokenSeparators: [',', ' '], multiple: false, templateResult:format, templateSelection: format, escapeMarkup: function (m) { return m; } }); }); </script>
function format(state) { var $state = $( '<span>' + state.text + ' <i class="' + state.id + ' flag"> ' + '</i></span>' ); return $state; };
<i class="ir flag"></i>
کار با Kendo UI DataSource
<script type="text/javascript"> $(function () { // var r = "12"; var productsDataSource = new kendo.data.DataSource({ transport: { read: { url: "@Url.Action("GetProducts", "Home")", dataType: "json", contentType: 'application/json; charset=utf-8', type: 'GET', data: { param1: "dfvdf", param2: "val2" } // ارسال اطلاعات اضافی و سفارشی به سرور در حین درخواست }, create: { url: "@Url.Action("PostProduct","Home")", contentType: 'application/json; charset=utf-8', type: "POST" }, update: { url:// function (product) { "@Url.Action("UpdateProduct","Home")",//, +product.Id; //}, contentType: 'application/json; charset=utf-8', type: "PUT" }, destroy: { url: function (p) { return "@Url.Action("DeleteProduct","Home")/" + p.Id; }, contentType: 'application/json; charset=utf-8', type: "DELETE" }, parameterMap: function (options) { return kendo.stringify(options); } }, schema: { parse: function (data) { return data; }, data: "Data", total: "Total", model: { id: "Id", // define the model of the data source. Required for validation and property types. fields: { "Id": { type: "number", editable: false }, //تعیین نوع فیلد برای جستجوی پویا مهم است "Name": { type: "string", validation: { required: true }, editable: true }, "Discription": { type: "string", }, "Title": { type: "string", editable: false }, "GroupName": { type: "string", }, "Link": { type: "string" } } }, batch: false, }, error: function (e) { alert(e.errorThrown.stack); }, pageSize: 5, sort: { field: "Id", dir: "desc" } }); $("#report-grid").kendoGrid({ dataSource: productsDataSource, autoBind: true, scrollable: false, pageable: true, sortable: true, columns: [ { field: "Id", title: "#" }, { field: "Name", title: "Product" } ] }); }); </script>
معرفی System.Text.Json در NET Core 3.0.
public class IntConverter : JsonConverter<int> { public override int Read (ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { var value = reader.GetString (); if (int.TryParse (value, out _)) return int.Parse (value); throw new NotSupportedException ($"`{value}` can't be converted to `int`."); } public override void Write (Utf8JsonWriter writer, int value, JsonSerializerOptions options) { writer.WriteNumberValue (value); } }