۷۶ مطلب با کلمهی کلیدی «آموزش MVC» ثبت شده است
برطرف کردن مشکل LINQ to Entities does not recognize
بسم الله الرحمن الرحیم
Server Error in '/' Application.
LINQ to Entities does not recognize the method 'EduOnline' method, and this method cannot be translated into a store expression.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
این خطا زمانی رخ می دهد که شما می خواهید یک دستور مشابه دستور زیر اجرا کنید:
db.Accounts.Where(m => m.AccountType == Enum.AccountTypes.Admin
برای حل این مشکل کافی است که کد خود را به صورت یک عبارت مشخص قابل بررسی توسط LINQ تبدیل کنید، مثلا در اینجا می توانید به صورت زیر و خیلی ساده کد خود را بنویسید و مشکل خود را حل نمایید:
db.Accounts.Where(m => m.AccountType == (int)Enum.AccountTypes.Admin)
در اینجا شما با تبدیل عبارت خود به یک به عبارت قابل مقایسه برای LINQ این مشکل را حل کرده اید
CodeSnippets
بسم الله الرحمن الرحیم
برای نوشتن سریعتر دستورات سی شارپ می توانید از Snippets Code استفاده کنید برای استفاده از این ویژگی کافی است کلید CTRL را به همراه K فشار دهید و سپس کلید S را نیز بزنید حال لیست دستوراتی را مشاهده می کنید که می توانید آن ها را انتخاب کنید در زیر این لیست قرار داده شده است.
برای نوشتن تمامی دستورات زیر کافی است متن نوشته شده را بنویسید و سپس دو بار کلید TAB را از روی کیبورد فشار دهید
نام دستور |
توضیحات |
if# |
|
region# |
Creates a #region directive and a #endregion directive. |
~ |
Creates a destructor for the containing class. |
attribute |
Creates a declaration for a class that derives from Attribute. |
checked |
Creates a checked block. |
class |
Creates a class declaration. |
ctor |
Creates a constructor for the containing class. |
cw |
Creates a call to WriteLine. |
do |
Creates a do while loop. |
else |
Creates an else block. |
enum |
Creates an enum declaration. |
equals |
Creates a method declaration that overrides the Equals method defined in the Object class. |
exception |
Creates a declaration for a class that derives from an exception (Exception by default). |
for |
Creates a for loop. |
foreach |
Creates a foreach loop. |
forr |
Creates a for loop that decrements the loop variable after each iteration. |
if |
Creates an if block. |
indexer |
Creates an indexer declaration. |
interface |
Creates an interface declaration. |
invoke |
Creates a block that safely invokes an event. |
iterator |
Creates an iterator. |
iterindex |
Creates a "named" iterator and indexer pair by using a nested class. |
lock |
Creates a lock block. |
mbox |
Creates a call to MessageBox.Show. You may have to add a reference to System.Windows.Forms.dll. |
namespace |
Creates a namespace declaration. |
prop |
Creates an auto-implemented property declaration. |
propfull |
Creates a property declaration with get and set accessors. |
propg |
Creates a read-only auto-implemented property with a private "set" accessor. |
sim |
|
struct |
Creates a struct declaration. |
svm |
|
switch |
Creates a switch block. |
try |
Creates a try-catch block. |
tryf |
Creates a try-finally block. |
unchecked |
Creates an unchecked block. |
unsafe |
Creates an unsafe block. |
using |
Creates a using directive. |
while |
Creates a while loop. |
مشخض کردن فایل و فولدرهای تغییر داده شده
بسم الله الرحمن الرحیم
ممکن است در پروژه ی شما، برای چک کردن یک دایرکتوری (Folder) مجبور باشید برنامه ای بنویسید که دائم مسیر مشخصی را برای شما چک کند و در صورتی که فایلی ایجاد/ حذف / ویرایش شد به شما اطلاع داده شود.
اولین راه حل این است که شما شروع کنید در بازهای زمانی مشخص مسیری را که مد نظر دارید چک کنید!
اما کلاس FileSystemWatcher در NET 4.5. این امکان را به شما می دهد که بدون نیاز به چک کردن مداوم یک مسیر، در هر زمانی که فایلی تغییر داده شد شما اطلاع پیدا کنید. مثال
using System;
using System.IO;
using System.Security.Permissions;
public class Watcher
{
public static void Main()
{
Run();
}
[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
public static void Run()
{
string[] args = System.Environment.GetCommandLineArgs();
// If a directory is not specified, exit program.
if(args.Length != 2)
{
// Display the proper way to call the program.
Console.WriteLine("Usage: Watcher.exe (directory)");
return;
}
// Create a new FileSystemWatcher and set its properties.
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = args[1];
/* Watch for changes in LastAccess and LastWrite times, and
the renaming of files or directories. */
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;
// Only watch text files.
watcher.Filter = "*.txt";
// Add event handlers.
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.Deleted += new FileSystemEventHandler(OnChanged);
watcher.Renamed += new RenamedEventHandler(OnRenamed);
// Begin watching.
watcher.EnableRaisingEvents = true;
// Wait for the user to quit the program.
Console.WriteLine("Press \'q\' to quit the sample.");
while(Console.Read()!='q');
}
// Define the event handlers.
private static void OnChanged(object source, FileSystemEventArgs e)
{
// Specify what is done when a file is changed, created, or deleted.
Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
}
private static void OnRenamed(object source, RenamedEventArgs e)
{
// Specify what is done when a file is renamed.
Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
}
}
using کردن و LifeTime Object
بسم الله الرحمن الرحیم
بسیاری مواقع وجود دارد که شما در بدنه تابع خود یک متغییر یا یک شی از کلاس را تعریف می کنید اما کار شما با این متغییر در چندین خط به پایان می رسد اما این متغییر یا شی شما در هنوز در حافظه وجود دارد، این مشکل در کلاس هایی که در فضای نامی متفاوت از فضای نامی فعلی شما وجود دارد بسیار حائز اهمیت است برای حل این مشکل کافی است که به صورت زیر عمل کنید:
using System;
using System.Data.SqlClient;
///
public class A {
///
public static void Main() {
string connectionString = "";
// Wait for 5 second delay in the command
string queryString = "waitfor delay '00:00:05'";
using (SqlConnection connection = new SqlConnection(connectionString)) {
connection.Open();
SqlCommand command = new SqlCommand(queryString, connection);
// Setting command timeout to 1 second
command.CommandTimeout = 1;
try {
command.ExecuteNonQuery();
}
catch (SqlException e) {
Console.WriteLine("Got expected SqlException due to command timeout ");
Console.WriteLine(e);
}
}
}
}
همانطور که مشاهده می کنید با استفاده از دستور using می توانیم میدان فعالیت یک شی را به سادگی مشخص کنیم.
آموزش برنامه نویسی سریع
ّبسم الله الرحمن الرحیم
بسیاری از کارهایی که ما در پروژه ها انجام می دهیم تکراری است از نوشتن یک کد ساده تا نوشتن یک کلاس و حتی خود یک پروژه!!
برای افزایش سرعت برنامه نویسی و تولید نرم افزار باید شما مجموعه ای از ابزار های مفید را برای خود ایجاد نمایید.
در این آموزش شما را با یک روش ساده برای افزایش نوشتن توابع و متدهای تکراری آشنا خواهم کرد
همه شما حداقل یک بار اینگونه توابع را نوشته اید
public void MyMethod()
{
try
{
}
catch (Exception exception)
{
throw new Exception(exception.Message);
}
finally
{
}
}
مثل همیشه مختصر و مفید، می خواهیم کاری انجام دهیم تا دیگر هیچ وقت اینگونه توابع را ننویسیم.
در ابتدا برای آموزش، فکر کنید میخواهید یک حلقه for بنویسید برای این کار، من راه بهتری سراغ دارم.
ابتدا کلمه for را بنویسید و سپس دو بار کامند TAB را بر روی کیبورد خود فشار دهید (یک حلقه for کامل نوشته شد).
فکر کنید می خواهید کد زیر را بنویسید:
public string StartSection { get; set; }
کلمه prop را بنویسید و سپس دوبار کامند TAB را بر روی کیبورد فشار دهید!!!
به این ابزار Code Snippet گفته می شود که از نوشتن کدهای تکراری جلوگیری می کند.
خوب حال به مسیر زیر بروید
C:\Users\{UserName}\Documents\Visual Studio 2013\Code Snippets\Visual C#
من از ویژوال استادیو 2013 استفاده می کنم پس در آدرس بالا Visual Studio 2013 نوشته شده است شاید نسخه شما متفاوت باشد (دنبال نسخه خود باشید).
بجای {UserName} باید دنبال پوشه ای که مربوط به نام کامپیوتر شما است باشید. مثلا
C:\Users\EduOnlien User\Documents\Visual Studio 2013\Code Snippets\Visual C#
اگر مسیر را پیدا نکردید، در هر مسیری که دوست دارید پوشه زیر را extract کنید.
دریافت کد نویسی به روش EduOnline
حجم: 2.52 کیلوبایت
EduOnline SniptCode
حال در ویژوال استادیو خود، منو Tools را از نوار منو بالا انتخاب کنید و سپس منو Code Sinppets Manager را انتخاب کنید در پنجره باز شده از قسمت
Language گزینه Visual C# l را انتخاب کنید و سپس گزینه Add را بزنید و به درون فولدری (حتما باید درون فولدر EduOnline SniptCode قرار گرفته باشید) که دانلود کرده اید بروید و سپس گزینه Select Folder را بزنید، سپس Ok را انتخاب کنید تا پنجره بسته شود.
حال در بخش کد نویسی خود عبارت
pum را بنویسید و سپس دوبار کلید Tab را بر روی کیبورد خود فشار دهید، سه گزینه به شما نمایش داده می شود که می توانید هر یک را انتخاب کنید.
برای کد نویسی در MVC نیز می توانید کلمه act را بنویسید و سپس دوبار کلید Tab را بر روی کیبورد خود فشار دهید.
تعیین یک Button به عنوان DefaultButton در MVC روش 2
بسم الله الرحمن الرحیم
در MVC برای اینکه شما یک Button را به عنوان Button پیش فرض قرار دهید و در صورتی که کاربر دکمه Enter کیبورد را زد آن Button را فراخوانی کنید کافی است به صورت زیر عمل کنید
@*<script type="text/javascript"> $(document).ready(function () {
$("#MyForm").keypress(function (e) {
kCode = e.keyCode || e.charCode //for cross browser
if (kCode == 13) {
var defaultbtn = $(this).attr("DefaultButton");
$("#" + defaultbtn).click();
return false;
}
});
});
</script>*@
<script type="text/javascript">
var ButtonKeys = { "EnterKey": 13 };
$(function () {
$("#MyForm").keypress(function (e) {
if (e.which == ButtonKeys.EnterKey) {
var defaultButtonId = $(this).attr("DefaultButton");
$("#" + defaultButtonId).click();
return false;
}
});
});
</script>
@using (Html.BeginForm("NewCustomer", "Customer", FormMethod.Post, new { DefaultButton = "btnContinue", id = "MyForm", Name = "MyForm" }))
{ <div id="login">
<table style="vertical-align:5px;">
<tr>
<td>
Enter Your Email ID
@Html.TextBoxFor(m => m.EmailId, new { @tabindex = "1", @Id = "subemail", @Name = "subemail"})
</td>
</tr>
<tr>
<td>
Select Your City</h2>
@Html.DropDownListFor(m => m.Address.City, new SelectList(ViewBag.CityList, "ItemValue", "ItemText"), new { @tabindex = "2"})
</td>
</tr>
<tr>
<td>
<input type="submit" value="Great Deals" class="btn" name="Continue" id="btnContinue" runat="server" tabindex="3"/>
</table>
</div>
تعیین یک Button به عنوان DefaultButton در MVC
بسم الله الرحمن الرحیم
تعیین یک Button به عنوان DefaultButton در MVC
در MVC برای اینکه شما یک Button را به عنوان Button پیش فرض قرار دهید و در صورتی که کاربر دکمه Enter کیبورد را زد آن Button را فراخوانی کنید کافی است به صورت زیر عمل کنید.
<script type="text/javascript">
$(document).ready(function (){
$("#MyForm").keypress(function (e) {
kCode = e.keyCode || e.charCode /*for cross browser */
if (kCode == 13) { var defaultbtn = $(this).attr("DefaultButton");
$("#" + defaultbtn).click();
return false;
}
});
});
</script>
@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { DefaultButton = "SubmitButton", id = "MyForm" }))
{
@Html.TextBox("txtname")
<span>Please Enter value and then press Enter Key</span><br />
<input type="submit" name="btnSubmit" id="SubmitButton" value="Submit" />
}
اضافه کردن JSON به پروژه های MVC
بسم الله الرحمن الرحیم
آموزش json
package های زیادی برای کار با JSON وجود دارد، در این جا ما ییک از این Package ها را با نام Newtonsoft.Json نصب خواهیم کرد تا بتوانیم توسط آن اطلاعات را ارسال و دریافت کنیم.
در صورتی که می خواهید به روش JSON در MVC اطلاعات را ارسال و دریافت کنید بهتر است که از قسمت Install package
دستور زیر را اجرا کتید
Install-Package Newtonsoft.Json
هر چند برای ارسال و دریافت به روش JSON فقط به یک چیز نیاز دارید و آن هم اضافه کردن فایل Jquery است
<script src="/Scripts/jquery-1.9.1.js"></script>
آموزش WebApi
بسم الله الرحمن الرحیم
آموزش WebApi
این دوره آموزشی مقدماتی می باشد، برای مطالعه سایر مقالات این دوره لطفا از طریق لینک زیر اقدام کنید.
مشاهده تمامی آموزش های دوره آموزش Web API
آموزش Web API– سطح مقدماتی
آموزش Web API
در قالب پروژه های MVC قالب جدیدی در خصوص ارسال و دریافت به روش معماری سرویس گرا و برنامه نویسی سرویس بر بستر HTTP به نام Web API معرفی گردید.
توضیحات تئوری بسیاری در راستای این تکنولوژی وجود دارد، ولی مهمترین مبحث، این است که اولا هدف از ارائه این روش منسوخ کردن روش WCF نیست بلکه استفاده از این تکنولوژی در بستر و ارسال و دریافت درخواست های مبتنی بر HTTP است.
این روش پیچیدگی های WCFرا در استفاده نخواهد داشت و به سادگی می توانید یک سرویس ساده تعریف کنید.
برای شروع کار یک پروژه MVC ایجاد کنید و در قالب مربوطه نوع web API را انتخاب کنید. حال در بخش مدل کلاس زیر را اضفه کنید
namespace MvcApplication1.Models
{
public class Employe
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public decimal salary { get; set; }
}
}
خوب هیچکار خاصی انجام ندادیم و تنها یک کلاس ساده برای کارمندان ایجاد کردیم، حال یک کنترلر را با نام Employe و نوع Empty Api controller ایجاد می کنیم و دستورات زیر را به آن اضافه می کنیم.
ادامه مطلب...
آموزش Remote در asp.net mvc
بسم الله الرحمن الرحیم
آموزش asp.net mvc
برای تعیین اعتبار یک فیلد مجموعه از DataAnnotations لازم ارائه گردید. قابلیت دیگری برای چک کردن یک مقدار وجود دارد که به صورت Ajax عمل می کند و از لود شدن دوباره یک صفحه جلوگیری می کند. طبیعتا همه ما فیلد نام کاربری مربوط به ثبت نام را درسایت های مختلف تکمیل کرده ایم و دیده ایم چطور وقتی که یک نام کاربری تکراری ثبت می کنیم خطای مربوطه را نمایش می دهد.
برای شروع کار یک پروژه جدید MVC ایجاد می کنیم و در بخش Model یک کلاس جدید با نام Account ایجاد و کد زیر را در آن می نویسیم:
namespace MvcApplication2.Models
{
[Table("Account")]
public class Account
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
[Display(Name = "User name")]
[Remote("ValidateUserName", "Account")]
public string UserName { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "New password")]
public string NewPassword { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm new password")]
[Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
}
}
ادامه مطلب...
طراحی یک مدل از روی EDMX
بسم الله الرحمن الرحیم
آموزش asp.net mvc
بنده شخصا از روش Code First در تولید وب سایت های MVC استفاده می کنم. ولی شروع فراگیریم در ارتباط با MVC به صورت روش معمولی یا همان روش طراحی پایگاه داده با SQL و سپس اضافه کردن مدل مربوطه به پروژه و... بود. برخی از دوستان از همین روش هنوز برای طراحی پروژه های MVC استفاده می کنند، به همین دلیل با مشکلاتی مواجه می شوند (البته هر روشی مزایا و معایب خود دارد در این بخش قصد ندارم در خصوص مزایا و معایب روش ها صحبت کنم بلکه مقصود ارائه راه حل در مورد مشکلات است). یکی از مشکلاتی که با آن مواجه خواهیم شد بحث DataAnnotations و Metadata هایی است که شما برای ساخت یک View سفارشی کد نویسی می کنید. خوب هر بار که شما پایگاه داده خود را تغییر دهید و بخواهید به هر دلیلی مجددا از پایگاه داده خود Model ها را مجددا ایجاد کنید تمامی کد نویسی شما از بین خواهد رفت.
برای حل این مشکل کافی است که یک کلاس Partial تعریف نمایید و در آن فیلدهای خود را در آن بنویسید و سپس یک کلاس برای نگهداری Metadata تعریف نمایید، به این کلاس ها Buddy می گویند.
ادامه مطلب...موتورهای View در asp.net mvc
بسم الله الرحمن الرحیم
آموزش asp.net mvc
همانطورکه می دانید موتورهای زیادی برای طراحی view سایت، در تکنولوژی MVC وجود دارد که دو موتور پیشنهادی از سوی مایکروسافت ASPX و موتور قدرمتند Razor می باشد. علاوه بر این دو موتور یا به اصطلاح view Engine، موتور های دیگری نیز توسط گروه های مختلف طراحی گردیده است که 4 موتور پیشرو در این عرصه موتورهای spark، NHalm، NVelocity و Brail می باشد. NVelocity بر پایه Java apache و NHalm برپایه Ruby on Rails است.
ادامه مطلب...using کردن در view
بسم الله الرحمن الرحیم
آموزش asp.net mvc
هنگامی که با یک view کار می کنید شما بدون اینکه Namespaceهای مربوطه را اضافه کرده باشید (برخلاف سایر کلاس ها) می توانید با تعدادی از Namespace ها بدون استفاده از دستور using کار کنید؟
برخی از فضاهای نام که بیشتر مورد استفاده خواهند بود به صورت پیش فرض توسط مایکروسافت در کلاس پیاده ساز view اضافه شده است. اما این کلاس کجاست؟
برای یافتن این کلاس باید به آدرس زیر بروید و به دنبال کلاسی بگردید که شامل محتوای viewشما باشد چون نامهای انتخابی ارتباطی با نامی که شما برای view خود انتخاب کردید ندارد اما از محتوای این کلاس ها می توانید به کلاس مربوطه دست پیدا کنید.
برای این کار بنده یک view با محتوای خاصی ایجاد کردم که در مسیر مربوطه پس از بررسی فایل ها به فایل مورد نظرم دست پیدا کردم و این فایل شامل اطلاعات زیر بود:
همان طور که در این فایل مشخص است Namespaceهایی به صورت پیش فرض توسط مایکروسافت به viewشما اضافه شده است. شما نیز می توانید به view خود Namespaceهای مورد نظر خود را اضاه کنید. اگر به یک فضای نام، تنها در یک view نیاز دارید بهتر است به روش معمولی آن را به صفحه اضافه کنید مثل کد زیر:
@{
MvcApplication2.App_Code.Class1 c = new MvcApplication2.App_Code.Class1();
c.rets();
}
اما اگر به یک فضای نام در تمامی viewها نیاز دارید کافی است آن را در فایل web configیی که در فولدر view ها قراردارد، به صورت زیر اضافه کنید:
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="MvcApplication2.App_Code"/>
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
</namespaces>
آموزش html Healper
بسم الله الرحمن الرحیم
آموزش asp.net mvc
در بیشتر مواقع شما نیاز دارید تا یک html Healper را ایجاد نمایید و از ان برای جلوگیری از تکرار دستورات و یا ایجاد یک خروجی مناسب استفاده کنید. برای این فرایند کافی است ابتدا یک کنترلر به صورت زیر با نوع empty ایجاد کنید:
namespace MvcApplication2.Controllers
{
public class SampleController : Controller
{
// GET: /Sample/
public ActionResult Index()
{
List List = new List();
List.Add("Esmaeil");
List.Add("Mojtaba");
List.Add("Reza");
List.Add("Hasan");
List.Add("Ali");
ViewBag.List = List;
return View();
}
}
}
حال view ای ایجاد و کد زیر را به آن اضافه کنید:
ادامه مطلب...آموزش TagBuillder
بسم الله الرحمن الرحیم
آموزش asp.net mvc
یکی از روش های تولید تگ های HTML اسنفاده از کلاس TagBuilder می باشد. این کلاس خصوصیات های زیادی را ارائه می دهد که پرکاربردترین آن ها را به همراه یک مثال ارائه داده شده است.
یک کنترلر جدید با نام Sample ایجاد کنید و سپس کد زیر را به آن اضافه نمایید:
namespace ExternalHtml.Controllers
{
public class SampleController : Controller
{
public MvcHtmlString CreateTagBuilder()
{
TagBuilder tagBuilderSpan = new TagBuilder("div");
tagBuilderSpan.SetInnerText("کلمه عبور");
TagBuilder tagBuilder = new TagBuilder("input");
tagBuilder.AddCssClass("inputTypeClass");
tagBuilder.Attributes.Add("type", "password");
tagBuilder.GenerateId("input~TagBuilder");
tagBuilder.IdAttributeDotReplacement = "input_TagBuilder";//Replace ~ char with _
tagBuilder.MergeAttribute("enable", "false");//set enable with false for understand below tag
tagBuilder.MergeAttribute("enable", "true", true);//true means exist tag replace and false denial tag
tagBuilderSpan.InnerHtml += tagBuilder.ToString();
return new MvcHtmlString(tagBuilderSpan.ToString());}
//
// GET: /Sample/
public ActionResult Index()
{
ViewBag.TagBuilder= CreateTagBuilder();
return View();
}
}
}
ادامه مطلب...
مرجع HTML Helper
بسم الله الرحمن الرحیم
آموزش ASP.NET MVC
در این مطلب قصد داریم کنترل های HTML Helper را معرفی نماییم. متناسب های با کنترل های HTML کنترلهایی را MVC ارائه می دهد که می توانید فرم های پویا برای ثبت اطلاعات طراحی نمایید:
از آن جا که تمامی دوستان با این کنترلها آشنا هستند فقط لیست این کنترلها با طرح یک مثال ارائه می شود:
برای شروع کار یک پروژه MVC ایجاد و سپس نوع آن را empty انتخاب کنید، حال یک کنترلر با نام Sample ایجاد و سپس view مربوطه را نیز ایجاد کنید و دستورات زیر را در view قرار دهید:
ادامه مطلب...آموزش طراحی قالب Responsive
بسم الله الرحمن الرحیم
آموزش طراحی قالب Responsive
در این بخش قصد دارم به صورت مختصر آموزش ساخت یک قالب Responsive را آموزش دهم. بدون هیچ بحث اضافی سراغ مباحث مربوطه می رویم:
برای نمایش عناصر صفحه در مقایس های مختلف مثل کامپیوتر ها یا تبلت و در نهایت موبایل به نحوی که بتوان اطلاعات را به صورت صحیح نمایش داد نیاز است شما در مورد هر مقایس تصمیمی اخذ نمایید برای این فرایند کافی است از دستور media@ استفاده نمایید. ساختار این دستور بسیار ساده می باشد. در دستور زیر ما مشخص کردیم که اگر خروجی ما صفحه نمایش بود و سایز ما حداقل 1200 پیکسل بود تغییرات مورد نظر صورت گیرد. این کار را به صورت های زیر می توان انجام داد:
درون یک فایل StyleSheet
@media screen and (min-width : 1200px) {
/* let's do somethin' */
}
لینک دادن به یک StyleSheet
<link rel="stylesheet" media="screen and (min-width: 1200px)" href="small.css" />
در روش بالا اگر سایز ما حداقل 1200 پیکسل بود فایل مشخص شده به صفحه ما اضافه می گردد.
لینک دادن به یک فایل StyleSheet (در صورت موبایل بودن دستگاه یا هر دستگاهی با نهایت وضوح 480 پیکسل)
<link rel="stylesheet" media="only screen and (max-device-width: 480px)" href="mobile.css" />
لینک دادن به یک فایل StyleSheet درون دستورات CSS
@import url( small.css ) screen and ( min-width: 1200px );
استفاده از عملگرهای منطقی
AND
@media (min-width: 600px) and (max-width: 800px) {
html { background: red; }
}
OR
@media (max-width: 600px), (min-width: 800px) {
html { background: red; }
}
NOT
@media not all and (max-width: 600px) {
html { background: red; }
}
Exclusive
@media (max-width: 400px) {
html { background: red; }
}
@media (min-width: 401px) and (max-width: 800px) {
html { background: green; }
}
@media (min-width: 801px) {
html { background: blue; }
}
Overriding
@media (min-width: 400px) {
html { background: red; }
}
@media (min-width: 600px) {
html { background: green; }
}
@media (min-width: 800px) {
html { background: blue; }
}
در نهایت یک مثال کامل
@media
only screen and (min-width: 100px),
not all and (min-width: 100px),
not print and (min-height: 100px),
(color),
(min-height: 100px) and (max-height: 1000px),
handheld and (orientation: landscape)
{
html { background: red; }
}
مرورگرهایی که دستورات media@ را پشتیبانی می کنند:
- Firefox 3.5+
- Opera 9.5+
- Safari 3+
- Chrome
- Internet Explorer 9+
آموزش Bundling
بسم الله الرحمن الرحیم
آموزش asp.net mvc
در این بخش قصد دارم در خصوص بهینه سازی و افزایش سرعت لود صفحات وب مباحثی را بررسی نماییم.
همان طور که می دانید اگر در یک سایت شما چندین فایل داشته باشید به ازای هر فایل می بایست یک درخواست به سرور ارائه شود و فایل مربوطه بازیابی گردد و این خود باعث طولانی شدن زمان لود صفحات می گردد، راهکاری که برای این مشکل ارائه گردیده است تبدیل چندین فایل به یک فایل می باشد که این روش متاسفانه فقط برای فایل های تصویری، رایج و مورد استفاده است.
واقعا بسیاری از ما نیز، هنوز از این روش رایج استفاده نمی کنیم کافی است که تمامی آیکون ها و تصاویر با سایز کوچکی که در سایت مورد استفاده می خواهیم قرار دهیم را به یک تصویر تبدیل کنیم.
ادامه مطلب...جداول موقت در SQL Server
بسم الله الرحمن الرحیم
آموزش جداول موقت در SQL Server
همانطور که می دانید در SQL server یک پایگاه داده از پیش تعریف شده با نام Tempdb وجود دارد، در بعضی مواقع شما نیاز به یک جدول موقت نیاز دارید این جداول در این پایگاه داده ذخیره می شود البته جداول به دو دسته تقسیم می شوند یکی ما متغییر هایی از جنس جدول و دیگری جداول موقت، منظور ما جداول موقت است.
خوب برای استفاده از ویژگی متغییر های جداول موقت کافی است مثل مثال زیر عمل نمایید:
DECLARE @Table TABLE
(
id INT ,name NVARCHAR(MAX)
);
DECLARE @i INT =0
WHILE(@i<20)
BEGIN
INSERT INTO @Table ([id],[name]) VALUES (@i,'ESH')
SET @i+=1;
END
SELECT * FROM @Table
--UPDATE
--DELETE
ادامه مطلب...
آموزش PIVOT در SQL Server
بسم الله الرحمن الرحیم
آموزش SQL Server
در بعضی مواقع نیاز است بجای نمایش نام ستون ها، مقدار فیلد به عنوان نام ستون و مقدار آن زیر ستون نمایش داده شود خوب بدون توضیح اضافی یک مثال مطرح می کنیم
SELECT [shiraz],[tehran]
FROM
(
SELECT [name]
,[salary]
FROM [emp]
) AS TEMP
PIVOT
(
SUM(salary) FOR [name] IN ([shiraz],[tehran])
)AS PVT
و در نهایت خروجی دستور
ادامه مطلب...