استخراج داده با Ajax از partialview و قرار دادن آن در المان html
در این مثال وقتی فرم RecordP مخفی می شود تابع Ajax اجرا شده و مقادیر را از جدول خوانده و آن را مجددا به روز می کند.
<script type="text/javascript">
$(document).ready(function () {
$("#RecordP").on("hide.bs.modal", function () {
$.ajax({
type: "GET",
url: '/FBProject/GetAllProjectPartial',
//data: formData,
contentType: false,
processData: false,
dataType: "html",
cache: false,
success: successFunc,
error: errorFunc,
complete: completeFunc
});
function successFunc(data)
{
$('#mainpage').html(data);
}
function errorFunc() { alert("خطا در آپلود فایل"); }
function completeFunc() { $('#loading').remove(); }
});
});
</script>
باند کردن مدل به DropDownList درMVC
کدهای کنترلر برای فرستادن داده های مدل
public ActionResult Create()
{
ViewBag.FBAbnieVahedID = new SelectList(db.FBAbnieVahed, "FBAbnieVahedID", "FBAbnieVahedName");
return View();
}
کدهای view برای نمایش داده ها :
<div class="form-group">
@Html.LabelFor(model => model.FBAbnieVahedID, "واحد", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("FBAbnieVahedID", null, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.FBAbnieVahedID, "", new { @class = "text-danger" })
</div>
</div>
پارمتر اول Html.DropDownList که به صورت String می باشد مشخص کننده نام پارامتر ViewBag ی می باشد که داده ها مدل توسط آن ارسال شده است.
@Html.DropDownList("MachBrandID", (SelectList)ViewBag.MyList, "انتخاب کنید", htmlAttributes: new { @class = "form-control" })
ست کردن آی دی برای کنترل
@Html.DropDownList("MachBrandID", null, htmlAttributes: new { @class = "form-control", id = "mbrand" })
مقدار دهی کنترل از طریق آی دی :
$("document").ready(function () {
$('#mbrand').val('@Model.MachBrandID');
});
کد اکشن از کنترلر
public ActionResult addjs()
{
String ss = "$('#opener').click(function () {$('#dialog').dialog('open');});";
return Content(ss);
}
<script type="text/javascript"> @{ Html.RenderAction("addjs", "MachGroup"); } </script>
<script type="text/javascript" src="~/MachGroup/addjs"></script>
پر کردن مدل با stored procedure با EF Entity Framework
کد کامل تابع اجرای این پروسه به صورت زیر است:
public static List<T> GetDataByParametrSP<T>(string SPName, DbContext context ,SqlParameter[] sqlParameter =null)
{
if (SPName == null || context == null)
{
//throw (new NullValueSend("Tabale name or Contex is null"));
throw (new Exception("SPName name or Contex is null"));
}
List<T> result = new List<T>();
string sqlp = " ";
if (sqlParameter!=null)
{
foreach (var item in sqlParameter)
{
sqlp += " " + item.ParameterName;
}
result = context.Database.SqlQuery<T>(SPName+ sqlp, sqlParameter).ToList();
return result;
}
result = context.Database.SqlQuery<T>(SPName).ToList();
return result;
}
پارامترهای این تابع به ترتیب
1- نام stored procedure موجود در دیتابیس
2- شی Context تعریف شده در برنامه برای ارتباط با دیتابیس
3- پارامترهای stored procedure به صورت آرایه این بخش میتواند خالی یا صورت Null ارسال شود یعنی هیچ پارامتری وجود نداشته باشد
فقط به این نکته توجه کنید که تابع به صورت جنریک می باشد و قبل از استفاده باید نوع مدل را به صورت جنریک برای آن مشخص کنید
خروجی این تابع یک لیست از مدل ارسال شده می باشد که توسط stored procedure پر شده است.
مثال
List<city> list =GetDataByParametrSP<city>("GetCity", db);
در مثال بالا یک stored procedure در دیتابیس وجود دارد که لیست شهرها را بر می گرداند.
در این مثال مدل City به صورت جنریک به تابع پاس داده شده و خروجی تابع لیست از مدل شهر ها خواهد بود
public Guid IDUnic { get; set; }
اگه به صورت بالا تعریف شود مقدار Guid به صورت خودکار توسط SQL Server داده می شود.
و اگر به صورت زیر تعریف شود مقدار Guid توسط C# معین می شود.
public Ostan()
{
IDUnic = new Guid();
}
[Key]
public Guid IDUnic { get; set; }
از دستور زیر برای مشخص کردن وضعیت یک رکورد در دیتابیس استفاده می شود:
حالتهای مختلف : حذف شده – اضافه شده – ذخیره نشده – تغییر داده شده – بدون تغییر
db.Entry(personel).State.ToString();
فعال کردن Web API هنگام استفاده اجرای برنامه از طریق Startup
برای این کار ابتدا باید پکیج زیر را نصب کنیم
Install-Package Microsoft.AspNet.WebApi.OwinSelfHost
سپس کد های زیر را به متد Configuration کلاس Startup اضافه کنیم
[assembly: OwinStartup(typeof(IdentitySample.Startup))]
namespace IdentitySample
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
WebApiConfig.Register(config);
app.UseWebApi(config);
ConfigureAuth(app);
}
}
}
تنظیمWEB API برای ایجاد خروجی به صورت JSON
روش اول
برای این کار کدهای زیر را به قسمت Global.asax اضافه نمایید:
GlobalConfiguration.Configuration.Formatters.
JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
GlobalConfiguration.Configuration.Formatters
.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
روش دوم :
یا اضافه کردن کد زیر به App_Start / WebApiConfig.cs
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
روش نصب پکیج ها ویژال استودیو به صورت آفلاین
برای این کار از دستور زیر در خط دستوری نیوگیت استفاده کنید
Install-Package C:\Path\To\Some\File.nupkg
objWebClient = new WebClient();
objWebClient.Headers[HttpRequestHeader.ContentType] = "application/json ; charset=utf-8";
objWebClient.Encoding = UTF8Encoding.UTF8;