۱۸۵ مطلب با موضوع «Web Development Teams» ثبت شده است
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. |
جلوگیری از باز شدن چندین نسخه از نرم افزار
بسم الله الرحمن الرحیم
در بعضی نرم افزار ها شما می بایست اجازه اجرا کردن چندین نسخه از نرم افزار را از کاربر سلب نمایید.
برای اجرا کردن تنها یک نسخه از نرم افزار توسط کاربر می توان به صورت زیر عمل کنید:
فایل program.cs را باز کنید و در آن کد زیر را اضافه کنید
public static Process PriorProcess()
// Returns a System.Diagnostics.Process pointing to
// a pre-existing process with the same name as the
// current one, if any; or null if the current process
// is unique.
{
Process curr = Process.GetCurrentProcess();
Process[] procs = Process.GetProcessesByName(curr.ProcessName);
foreach (Process p in procs)
{
if ((p.Id != curr.Id) &&
(p.MainModule.FileName == curr.MainModule.FileName))
return p;
}
return null;
}
حال متد Main را به صورت زیر عوض کنید:
[STAThread]
static void Main()
{
if (PriorProcess() != null)
{
MessageBox.Show("Another instance of the app is already running.");
return;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form());
}
مشخض کردن فایل و فولدرهای تغییر داده شده
بسم الله الرحمن الرحیم
ممکن است در پروژه ی شما، برای چک کردن یک دایرکتوری (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 static DateTime TrimMilliseconds(this DateTime dt)
{
return new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, 0);
}
DateTime.Compare(DateTime1.TrimMilliseconds(),DateTime2.TrimMilliseconds);
یا می همان بخش از تاریخ و زمان را که نمی خواهید مقایسه شود صفر نمایید مثلا همان ثانیه ها
dt = dt.AddMilliseconds(-dt.Millisecond);
اما با این تابع می توانید مقایسه های متفاوتی داشته باشید:
public static DateTime TruncateTo(this DateTime dt, DateTruncate TruncateTo)
{
if (TruncateTo == DateTruncate.Year)
همه
else if (TruncateTo == DateTruncate.Month)
return new DateTime(dt.Year, dt.Month, 0);
else if (TruncateTo == DateTruncate.Day)
return new DateTime(dt.Year, dt.Month, dt.Day);
else if (TruncateTo == DateTruncate.Hour)
return new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, 0, 0);
else if (TruncateTo == DateTruncate.Minute)
return new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, 0);
else
return new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second);
}
public enum DateTruncate
{
Year,
Month,
Day,
Hour,
Minute,
Second
}
برای استفاده از این متد مثلا اگر بخواهید فقط تاریخ و ساعت مقایسه شود یعنی دقیقه، ثانیه و میلی ثانیه در نظر گرفته نشود باید به صورت زیر عمل کنید
DateTime dtSecs = DateTime.Now.TruncateTo(Extensions.DateTruncate.Hour);//فقط سال، ماه، روز و ساعت ذخیره می شود دقیقه و ثانیه هر دو صفر است پس عملا مقایسه بر روی تاریخ و ساعت صورت می گیرید
DateTime dtHrs = DateTime.Now.TruncateTo(Extensions.DateTruncate.Hour);
DateTime.Compare(dtSecs,dtHrs);
اضافه کردن فیلد nullable در دیتابیس با EF
بسم الله الرحمن الرحیم
اگر بخواهید پراپرتی زیر را به صورت nullable در پایگاه داده ذخیره کنید
[Required]
public int somefield {get; set;}
می بابیست کد خود را به صورت زیر تغییر دهید
[Required]
public int? somefield {get; set;}
علامت "؟" بعدر از نوع متغییر باعث می شود که این متغییر مقدار null را نیز بپذیرد.
همچنین با استفاده از روش Fluid API می توانید اینکار را انجام دهید:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<SomeObject>().Property(m => m.somefield).IsOptional();
base.OnModelCreating(modelBuilder);
}
C# ADO.NET SqlCommand - ExecuteNonQuery
بسم الله الرحمن الرحیم
پاسخ:
برای اجرا کردن و برنامه نویسی دستور Insert و update و Delete در سی شارپ می توانید به صورت زیر عمل کنید
using System;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string connetionString = null;
SqlConnection cnn ;
SqlCommand cmd ;
string sql = null;
connetionString = "Data Source=ServerName;Initial Catalog=DatabaseName;User ID=UserName;Password=Password";
sql = "insert into table1 ...............";
cnn = new SqlConnection(connetionString);
try
{
cnn.Open();
cmd = new SqlCommand(sql, cnn);
cmd.ExecuteNonQuery();
cmd.Dispose();
cnn.Close();
MessageBox.Show (" ExecuteNonQuery in SqlCommand executed !!");
}
catch (Exception ex)
{
MessageBox.Show("Can not open connection ! ");
}
}
}
}
در صورتی که دستور ExecuteNonQuery بر روی پایگاه داده شما تاثیری بگذارید (رکوردی حذف شود، رکوردی درج شود، رکورد یا رکوردهایی بروز رسانی شوند) این دستور مقداری را به غیر از 0 برمی گرداند که تعداد رکورد هایی است که تحت تاثیر این دستور قرار گرفته اند در غیر این اگر این دستور هیچ تغییری در پایگاه داده ایجاد نکند مقدار 0 بر می گرداند:
int rowsAffected = command.ExecuteNonQuery();
بدست آوردن زمان ایجاد و آخرین تغییر یک فایل
ّبسم الله الرحمن الرحیم
برای برنامه نویسی و بدست آوردن زمان ایجاد یک فایل و آخرین زمان تغییر آن می توانید به صورت زیر عمل کنید
using System;
using System.IO;
namespace getLastTimeStamp
{
class Program
{
static void Main(string[] args)
{
FileInfo info = new FileInfo(@"C:\temp\getLastTimeStamp\Program.cs");
Console.WriteLine(info.CreationTime.ToString());
Console.WriteLine(info.LastWriteTime.ToString());
Console.ReadLine();
}
}
}
آموزش برنامه نویسی سریع
ّبسم الله الرحمن الرحیم
بسیاری از کارهایی که ما در پروژه ها انجام می دهیم تکراری است از نوشتن یک کد ساده تا نوشتن یک کلاس و حتی خود یک پروژه!!
برای افزایش سرعت برنامه نویسی و تولید نرم افزار باید شما مجموعه ای از ابزار های مفید را برای خود ایجاد نمایید.
در این آموزش شما را با یک روش ساده برای افزایش نوشتن توابع و متدهای تکراری آشنا خواهم کرد
همه شما حداقل یک بار اینگونه توابع را نوشته اید
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 پیش فرض
بسم الله الرحمن الرحیم
<script type="text/javascript">
var ButtonKeys = { "EnterKey": 13 };
$(function() {
$("#MainForm").keypress(function(e) {
if (e.which == ButtonKeys.EnterKey) {
var defaultButtonId = $(this).attr("defaultbutton");
$("#" + defaultButtonId).click();
return false;
}
});
});
</script>
<% using (Html.BeginForm("DefaultButtonTest", "Home", FormMethod.Post,
new { defaultbutton = "SubmitButton",id="MainForm" })){%>
<%= Html.TextBox("test")%>
<input type="submit" name="btnSubmit" id="SubmitButton" value="Submit" />
<%}%>
<form action="/Home/DefaultButtonTest" defaultbutton="SubmitButton"
id="MainForm" method="post">
<input id="test" name="test" type="text" value="" />
<input type="submit" name="btnSubmit" id="SubmitButton" value="Submit" />
<input type="submit" name="btnSubmit" id="CancelButton" value="Cancel" />
</form>
تعیین یک 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 در ASP.NET
بسم الله الرحمن الرحیم
در ASP.NET برای اینکه شما یک Button را به عنوان Button پیش فرض قرار دهید و در صورتی که کاربر دکمه Enter کیبورد را زد آن Button را فراخوانی کنید کافی است به صورت زیر عمل کنید
<form runat="server">
<asp:Panel runat="server" DefaultButton="bt1">
<asp:TextBox runat="server" />
<asp:Button id="bt1" Text="Default" runat="server" />
</asp:Panel>
</form>
تعیین یک 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" />
}
خطای undefined
بسم الله الرحمن الرحیم
خطای undefined
<script>
$(document).ready(function () {
$("#login").click(function () {
var username = $("#username").val();
var password = $("#password").val();
alert(username);
});
});
</script>
در پنجره alert پیغام زیر نمایش داده می شود.
undefined
1) فایل jquery را در ابتدای head قراردهید نه انتهای body
2) Id کنترل ها را چک کنید
<input name="username" id="username" type="text" class="input username" placeholder="Username" />
<input name="password" id="password" type="password" class="input password" placeholder="Password" />
System.IO.FileNotFoundException: Could not load file or assembly
بسم الله الرحمن الرحیم
خطای System.IO.FileNotFoundException: Could not load file or assembly
اگر از Visual Studio 2012 یا 2013 استفاده می کنید ممکن است در اجرای دستور
Enable-Migrations
یا
update-database
با خطای زیر موجه شوید
ادامه مطلب...تغییر Layout.cshtml_
بسم الله الرحمن الرحیم
آموزش asp.net mvc
هنگامی که شما یک پروژه جدید ایجاد می کنید به صورت پیش فرض قالب یا همان Layout شما که توسط MVC ایجاد می شود به صورت زیر خواهد بود
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>@ViewBag.Title - My ASP.NET MVC Application</title>
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<meta name="viewport" content="width=device-width" />
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
<script src="~/Temporary/jquery-1.8.2.js"></script>
</head>
<body>
<header>
<div class="content-wrapper">
<div class="float-left">
<p class="site-title">@Html.ActionLink("your logo here", "Index", "Home")</p>
</div>
<div class="float-right">
<section id="login">
@Html.Partial("_LoginPartial")
</section>
<nav>
<ul id="menu">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
</nav>
</div>
</div>
</header>
<div id="body">
@RenderSection("featured", required: false)
<section class="content-wrapper main-content clear-fix">
@RenderBody()
</section>
</div>
<footer>
<div class="content-wrapper">
<div class="float-left">
<p>© @DateTime.Now.Year - My ASP.NET MVC Application</p>
</div>
</div>
</footer>
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
</body>
</html>
این قالب یک Layout است که در پروژه MVC با نوع Internet ایجاد شده است ترجیحا برای اینکه به مشکل برنخورید بهتر است تغییراتی را در آن ایجاد کنید
مثال:
ممکن است شما یک تابع jquery یا javascript داشته باشید که در پروژه MVC شما کار نمی کند در صورتی که تابع شما صحیح است مثلا مثل تابع زیر
<script>
$(document).ready(function () {
$("#TestButton").click(function () {
alert("Huge Code :)");
});
});</script>
خوب اگر این کد اجرا نشود پس یک جای کار مشکل دارد!!!
برای اجرا شدن این چنین کد های سنگینی :) بهتر است که Layout پیش فرض را کمی تغییر دهید. برای اجرا شدن این کد کافی است که فقط دستور زیر را که در پایین ترین خط body نوشته شده است به میان دستورات Head انتقال دهید
@Scripts.Render("~/bundles/jquery")
مشکلات NET 4.5.
بسم الله الرحمن الرحیم
متاسفانه میاکروسافت همیشه بر روی کاربرانش به عنوان یک جامعه آزمایشگاهی استفاده می کند همه ویندوز ویستا و عمر کمتر از یک سال آن را به خاطر دارید!
حال که مایکروسافت NET 4.5 خود را عرضه کرده است، ترجیحا تا stable شدن آن بهتر است از آن استفاده نکنید
چند مشکل ساده:
بجای اسیکوال کانکشن همیشگی می بایست چند property دیگر را set کنید که ممکن چندین ساعت وقت شما را بگیرد!!!
برای Run شدن پروژه همیشه یک سری dll در پوشه bin وجود دارند که فراخوانی می شوند متسفانه در اینجا هم اگر NET 4.5 استفاده کنید به مشکل برخواهید خرد
مشکل آخر :
شاید اگر از NET 4 استفاده کنید برای نصب Package ها و compatiable کردن آنها چند ساعت بگذارید!! که باز هم زیاد خواهد بود اما برای همان کار با NET 4.5 شاید چند روز :(
ساخت یک پروژه MVC
بسم الله الرحمن الرحیم
ساخت یک پروژه MVC
بهترین نسخه برای ایجاد پروژه در حال حاضر نسخه MVC 4 می باشد که بهتر است به صورت زیر ایجاد شود
1- MVC 4
2- NET 4 (در مورد معایب 4.5 NET توضحاتی در این بخش ارائه کردم )
3- EF 5 (در مورد معایب EF 6 توضحاتی در این بخش ارائه کردم )
4- نوع پروژه را Internet انتخاب کنید به دلیل نصب شدن یک سری از Package ها به صورت پیش فرض
اضافه کردن 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>
ارسال و دریافت اطلاعات به روش JSON
بّسم الله الرحمن الرحیم
آموزش json در mvc
چند نکته در این آموزش مهم است :
اولا یک صفحه HTML یا CSHTML ایجاد کتنید در بالای صفحه jquery را لود کنید
<script src="/Scripts/jquery-1.9.1.js"></script>
بعد کد زیر را در ابتدای body قرار دهید
$(document).ready(function () {
$("#login").click(function () {
$("#message").html("Logging in...");
var data = { "userid": $("#userid").val(),
"password": $("#password").val(),
"rememberme":$("#rememberme").prop("checked") };
$.ajax({
url: "/account/validateuser",
type: "POST",
data: JSON.stringify(data),
dataType: "json",
contentType: "application/json",
success: function (status) {
$("#message").html(status.Message);
if (status.Success)
{
window.location.href = status.TargetURL;
}
},
error: function () {
$("#message").html("Error while authenticating
user credentials!");
}
});
});
});
این کد در واقع دارد اطلاعات دو TextBox با Id های userid و password را به همراه یک چک باکس برای یادآوری اطلاعات کاربری دریافت می کند و به یک اکشن ارسال می کند طبیعتا اکشن ما باید به شکل زیر باشد
ادامه مطلب...