تولید کنترل داینامیک بر اساس جدول دیتابیس
با سلام
من یک جدول محصولات دارم و یک جدول خصوصیات محصول که به صورت داینامیک کاربر n تا خصوصیت برای یک محصول ایجاد می کنه ( رنگ ، اندازه ، ظرفیت و ... ) حالا بعد از تعریف این خصوصیات من می خوام کاربر بتونه این فیلد هایی که تعریف کرده رو مقدار دهی کنه و کنترل مناسبی جلو هر خصوصیت تولید بشه ( ۳ مدل هست string , bool , select ) که این مورد رو هم با یک فیلد کنترل می کنم . من الان به شدت در اینکه چطور باید این view رو تولید کنم که بر اساس رکورد دیتابیس باشه و کاربر بتونه مقدار مناسب رو بده مشکل دارم و نمی دونم دقیق باید چیکار کنم . ممنون می شم راهنمایی کنید
با تشکر
نقل قول: تولید کنترل داینامیک بر اساس جدول دیتابیس
نقل قول: تولید کنترل داینامیک بر اساس جدول دیتابیس
سلام
نه متاسفانه . من بیشتر گیج شدم
نقل قول: تولید کنترل داینامیک بر اساس جدول دیتابیس
سلام
دوستان کسی نمی تونه یک راهنمایی کاربری به من بکنه که من بتونم یک صفحه کنترلش هاش رو از روی دیتابیس تولید کنم ؟
ممنون
نقل قول: تولید کنترل داینامیک بر اساس جدول دیتابیس
مقدار هارو داخل دیتابیس ذخیره کنید ; بر اساس این پاسخ از دیتابیس مقادیر رو دریافت و کنترل هارو ایجاد کنید : https://stackoverflow.com/a/26629885/6661314
نقل قول: تولید کنترل داینامیک بر اساس جدول دیتابیس
نقل قول:
نوشته شده توسط
Moien Tajik
ممنون .
من جداول رو انجام دادم . الان مشکل نمایش کنترل های داینامیک هست
توی این لینکی که دادید یک جا این رو نوشته
In controller modify the GetControl method as
متوجه نمی شم این رو باید کجا و چطور انجام بدم
و اینکه در نهایت در view مقدار ها داده شد چطور از روی viewmodel مقادیر رو داخل دیتابیس پر کنم
ممنون می شم یک راهنمایی عمیق تر بکنید
1 ضمیمه
نقل قول: تولید کنترل داینامیک بر اساس جدول دیتابیس
این یک مثال برای شروع ; میتونید خودتون Customize کنیدش و Control های بیشتری بهش اضافه کنید.
نقل قول: تولید کنترل داینامیک بر اساس جدول دیتابیس
نقل قول:
نوشته شده توسط
Moien Tajik
این یک مثال برای شروع ; میتونید خودتون Customize کنیدش و Control های بیشتری بهش اضافه کنید.
سلام مدیر عزیز
ممنون که با این مثال من رو کامل متوجه کردید . این یک مشکل رو هم بگید من چطور حل کنم ممنون می شم
الان من طبق روند شما جلو رفتم و همه چی اوکی هست ولی من می خوام این فیلد ها که پر شد رو به یک Action نوع post بفرستم که بتونم داخل دیتابیس ذخیره کنم . اومدم view رو به این شکل تغییر دادم :
@model DynamicControls.ViewModels.HomeViewModel
@{
ViewBag.Title = "Dynamic Controls";
}
<h2>@ViewBag.Title</h2><hr />
@using (Html.BeginForm("Index", "Home", FormMethod.Post, new {enctype = "multipart/form-data"}))
{
<h3>Contents of this page has been generated dynamically : </h3>
@Html.EditorFor(m => m.ControlList, "CustomControl")
<button type="submit" class="btn btn-primary">ارسال</button>
}
و یک اکشن هم به شکل زیر برای تست زدم :
[HttpPost]
public ActionResult Index(HomeViewModel home)
{
return Content("ok");
}
و یک برک پوینت گذاشتم اما مقداری که به ویو مدل ارسال می شه null هست . نمی دونم باید چکار کنم که بتونم مقادیر رو ارسال کنم به یک اکشن که بشه ذخیرشون کرد چون بون ذخیره کردن کار جلو نمی ره
ممنون بابت وقتتون
تشکر
نقل قول: تولید کنترل داینامیک بر اساس جدول دیتابیس
چون HomeViewModel داخلش لیستی از ControlInfo هارو دریافت میکنه در اکشن null دریافت میکنید.
برای دریافت اطلاعات صحیح به این شکل باید عمل کنید ، یعنی بطور صریح name فیلدهارو بعنوان ورودی اکشن دریافت کنید :
[HttpPost]
public ActionResult Index(string firstName, bool isAdmin)
{
return Content("Ok");
}
نقل قول: تولید کنترل داینامیک بر اساس جدول دیتابیس
نقل قول:
نوشته شده توسط
Moien Tajik
چون HomeViewModel داخلش لیستی از ControlInfo هارو دریافت میکنه در اکشن null دریافت میکنید.
برای دریافت اطلاعات صحیح به این شکل باید عمل کنید ، یعنی بطور صریح name فیلدهارو بعنوان ورودی اکشن دریافت کنید :
[HttpPost]
public ActionResult Index(string firstName, bool isAdmin)
{
return Content("Ok");
}
سلام
ممنون از پاسختون
ولی متاسفانه نمی شه . من الان داخل فرمم شاید ۱۰ تا کنترلر درست بشه که کاربر پر می کنه ولی خوب اگر اسم فیلد رو بزاریم یک پارامتر رو شامل می شه . یک لیستی از اون مدل رو هم به عنوان ورودی گذاشتم باز Null می آد
ممنون می شم راهنمایی کنید
با تشکر
نقل قول: تولید کنترل داینامیک بر اساس جدول دیتابیس
برای همچین کاری مجبور هستید که ControlName همه ی Control هارو یکسان بزارید ، بعنوان مثال به این شکل :
_controls = new List<ControlInfo>
{
new ControlInfo
{
ControlType = "TextBox",
ControlName = "items",
ControlID = "firstname",
ControlLabel = "Name",
ControlValue = "Moien"
},
new ControlInfo
{
ControlType = "Checkbox",
ControlName = "items",
ControlID = "isAdmin",
ControlLabel = "Admin",
ControlValue = "Admin ?",
IsChecked = false
}
};
در این صورت باید در اکشن POST ، آرایه ای از items رو دریافت کنید :
[HttpPost]
public ActionResult Index(string[] items)
{
return Content("Ok");
}
با این روش بصورت Dynamic اطلاعات رو دریافت میکنید ، اما برای تشخیص اینکه نوع کنترلی که Value از سمتش میاد چی هست ، میتونید به ابتدای value ها ، type کنترل رو اضافه کنید.
مثال :
کد HTML:
<input type="text" name="@controlInfo.ControlName" id="@controlInfo.ControlID" value="input::@controlInfo.ControlValue" class="form-control" />
و به این شکل Type کنترل رو هم دریافت میکنید و داخل دیتابیس ذخیره میکنید و بعدا موقع Retreive کردن از دیتابیس ، بر اساس type که قبل از :: گذاشتید با Switch کردنش ، کنترل مربوط رو Render میکنید.