View Full Version : مبتدی: نحوه کارکردن DropDownlistfor
EBRAHIMIEKOKDARAGHI
سه شنبه 26 اسفند 1393, 12:59 عصر
با سلام خدمت اساتید محترم
من در مورد استفاده از dropdownlistfor برای نمایش و ارسال اطلاعات هر چه سرچ کردم نتوانستم اون جیزی رو که میخوام بفهمم اگه میشه توضیح کاملی در در مورد نمایش کلید اصلی یک جدول برای استفاده در جدول دوم که با آن ارتباط دارد را توضیح دهید
r4hgozar
چهارشنبه 27 اسفند 1393, 09:28 صبح
سلام
http://stackoverflow.com/questions/22218079/loading-dropdown-list-with-data-from-table-in-mvc4
EBRAHIMIEKOKDARAGHI
چهارشنبه 27 اسفند 1393, 11:31 صبح
باسلام وبا تشکر از جوابتون
با این روش اطلاعات نمایش داده میشه ولی وقتی که اطلاعات را انتخاب میکنم و ارسال میکنم دچار ارور زیر میشم
129557
EBRAHIMIEKOKDARAGHI
پنج شنبه 28 اسفند 1393, 21:03 عصر
سلام
منتظر جوابم!!!
aroshanzamir
پنج شنبه 28 اسفند 1393, 21:32 عصر
سلام ;
در صورتی که نام اکشن شما Create باشد شما دو متد دارید یک برای نمایش (HttpGet) و یکی هم برای ارسال (HttpPost) .. بعد از پایان کار در HttpPost /
به اکشن (HttpGet) (نمایش)
redirectToAction("create") کنید
EBRAHIMIEKOKDARAGHI
پنج شنبه 28 اسفند 1393, 22:06 عصر
با سلام
اون مورد حل شد ولی چرا با اینکه من مقدار انتخاب کردم ولی به httpPost مقدار null رو میفرسته؟
aroshanzamir
پنج شنبه 28 اسفند 1393, 23:52 عصر
سلامی دوباره : شما یه لطف کن هم کد های کنترولر منظورم دو تا اکشن و کد های View را بزار :
تا اگر نشد یه مثال بزنم واست آپلود کنم
EBRAHIMIEKOKDARAGHI
جمعه 29 اسفند 1393, 10:44 صبح
سلام و با تشکر
public ActionResult Create()
{
IEnumerable<SelectListItem> abc = new SelectList(db.Contractor, "ContractorId", "ContractorName");
ViewBag.Contractor = abc;
return View();
}
//
// POST: /Masin/Create
[HttpPost]
public ActionResult Create(Mashin mashin, HttpPostedFileBase file)
{
if (ModelState.IsValid)
{
if (file != null)
{
mashin.Img = new byte[file.ContentLength];
file.InputStream.Read(mashin.Img, 0, file.ContentLength);
mashin.ImgType = file.ContentType;
db.Mashin.Add(mashin);
db.SaveChanges();
return RedirectToAction("Index");
}
else
{
mashin.Img = null;
//file.InputStream.Read(mashin.Img, 0, file.ContentLength);
mashin.ImgType = null;
db.Mashin.Add(mashin);
db.SaveChanges();
return RedirectToAction("Index");
}
}
return RedirectToAction("create");
}
اینم کد view
@using (Html.BeginForm("Create", "Mashin", FormMethod.Post, new { enctype = "multipart/form-data" })
) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Mashin</legend>
<div class="editor-label">
@Html.LabelFor(model => model.MashinID)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.MashinID)
@Html.ValidationMessageFor(model => model.MashinID)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.MashinName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.MashinName)
@Html.ValidationMessageFor(model => model.MashinName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.MashinCoName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.MashinCoName)
@Html.ValidationMessageFor(model => model.MashinCoName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.AddressCo)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.AddressCo)
@Html.ValidationMessageFor(model => model.AddressCo)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Bargh)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Bargh)
@Html.ValidationMessageFor(model => model.Bargh)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Mekanik)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Mekanik)
@Html.ValidationMessageFor(model => model.Mekanik)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.DateMake)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.DateMake)
@Html.ValidationMessageFor(model => model.DateMake)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.DateInstalltion)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.DateInstalltion)
@Html.ValidationMessageFor(model => model.DateInstalltion)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Contractor)
</div>
<div class="editor-field">
@Html.DropDownList("Contractor",string.Empty)
@Html.ValidationMessageFor(model => model.Contractor.ContractorId)
</div>
<div>
عکس ماشین :<input type="file" multiple="multiple" name="file" />
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
اینم کد model
public class Mashin
{
[Required]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption .Identity)]
public int number { get; set; }
[Key]
[Required]
[Display(Name="کد ماشین")]
[StringLength(50,ErrorMessage="طول رشته باید از 1 تا50 باشد",MinimumLength=1)]
public string MashinID { get; set; }
[Required]
[Display(Name = "نام ماشین")]
[StringLength(50, ErrorMessage = "طول رشته باید از 1 تا50 باشد", MinimumLength = 1)]
public string MashinName { get; set; }
[Display(Name = "نام شرکت سازنده ")]
[StringLength(100, ErrorMessage = "طول رشته باید از 1 تا100 باشد", MinimumLength = 1)]
public string MashinCoName { get; set; }
[Display(Name = "آدرس شرکت سازنده ")]
[StringLength(150, ErrorMessage = "طول رشته باید از 1 تا150 باشد", MinimumLength = 1)]
public string AddressCo { get; set; }
[Display(Name = "مشخصات سیستم برق")]
[StringLength(150, ErrorMessage = "طول رشته باید از 1 تا150 باشد", MinimumLength = 1)]
public string Bargh { get; set; }
[Display(Name = "مشخصات سیستم مکانیک")]
[StringLength(150, ErrorMessage = "طول رشته باید از 1 تا150 باشد", MinimumLength = 1)]
public string Mekanik { get; set; }
[Display(Name = "تاریخ ساخت")]
[StringLength(10, ErrorMessage = "طول رشته باید از 1 تا10 باشد", MinimumLength = 1)]
public string DateMake { get; set; }
[Display(Name = "تاریخ نصب")]
[StringLength(10, ErrorMessage = "طول رشته باید از 1 تا10 باشد", MinimumLength = 1)]
public string DateInstalltion { get; set; }
[Display(Name = "عکس ماشین")]
[Column(TypeName="Image")]
public byte[] Img { get; set; }
public string ImgType { get; set; }
// [ForeignKey("ContractorsID")]
[StringLength(50, MinimumLength = 1)]
public virtual Contractor Contractor { get; set; }
}
EBRAHIMIEKOKDARAGHI
جمعه 29 اسفند 1393, 21:33 عصر
با سلام
آقا ما منتطر جوابیم!!!
aroshanzamir
شنبه 01 فروردین 1394, 10:40 صبح
سلام من اومدم خودم واست یه مثال بزنم دیدم شما dropdownlist را خالی گذاشتی لیست را که بهش ندادی /
همون ViewBag.Contractor را که تعریف کرد بهش بایند کن : به این صورت :
@Html.DropDownList("Contractor", (IEnumerable<SelectListItem>)ViewBag.Contractor, "یکی از گزینه ها را انتخاب نمایید", null)
از ViewModel استفاده کن و این دردسر ها را هم نداری .. بای یک کلاس بویس با فیلد های که مورد نیاز است بعد در کنترولر اون ها را به کلاس اصلی اختصاص بده مثلا یکی از فیلد های کلاس ماشین شما Contractor است که این خودش یک کلاس است به جای این بیا در کلاس ViewModel یک فیلد با نام مثلا Contractor_Id تعریف کن در این صورت :
@Html.DropDownListFor(model=>model.Contractr_Id, (IEnumerable<SelectListItem>)ViewBag.Contractor, "یکی از گزینه ها را انتخاب نمایید", null)
باز هم اگر نشد بگو تا خودم یک مثال واست بزنم و آپلود کنم
EBRAHIMIEKOKDARAGHI
شنبه 01 فروردین 1394, 13:52 عصر
با سلام و تشکر
اگه میشه مثالو برام آپ کن
EBRAHIMIEKOKDARAGHI
یک شنبه 02 فروردین 1394, 15:27 عصر
با سلام وتشکر از aroshanzamir (http://barnamenevis.org/member.php?263288-aroshanzamir)
من تونستم مشکل و حل کنم حا لا برای استفاده از سایر دوستان توضیح میدم
من از قکر میکرد باید از پراپرتی که خودش یک کلاس Contractor در کلاس Mashin استفاده کنم درحالی که اینطور نیست و باید از اتریبیوت
[ForeignKey("ContractorId")] استفاده بشه یک پراپرتی دیگه مثلا ContractorId درست بشه از آن به عنوان کلید خارجی استفاده بشه
public class Mashin {
[Required]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption .Identity)]
public int number { get; set; }
[Key]
[Required]
[Display(Name="کد ماشین")]
[StringLength(50,ErrorMessage="طول رشته باید از 1 تا50 باشد",MinimumLength=1)]
public string MashinID { get; set; }
[Required]
[Display(Name = "نام ماشین")]
[StringLength(50, ErrorMessage = "طول رشته باید از 1 تا50 باشد", MinimumLength = 1)]
public string MashinName { get; set; }
[Display(Name = "نام شرکت سازنده ")]
[StringLength(100, ErrorMessage = "طول رشته باید از 1 تا100 باشد", MinimumLength = 1)]
public string MashinCoName { get; set; }
[Display(Name = "آدرس شرکت سازنده ")]
[StringLength(150, ErrorMessage = "طول رشته باید از 1 تا150 باشد", MinimumLength = 1)]
public string AddressCo { get; set; }
[Display(Name = "مشخصات سیستم برق")]
[StringLength(150, ErrorMessage = "طول رشته باید از 1 تا150 باشد", MinimumLength = 1)]
public string Bargh { get; set; }
[Display(Name = "مشخصات سیستم مکانیک")]
[StringLength(150, ErrorMessage = "طول رشته باید از 1 تا150 باشد", MinimumLength = 1)]
public string Mekanik { get; set; }
[Display(Name = "تاریخ ساخت")]
[StringLength(10, ErrorMessage = "طول رشته باید از 1 تا10 باشد", MinimumLength = 1)]
public string DateMake { get; set; }
[Display(Name = "تاریخ نصب")]
[StringLength(10, ErrorMessage = "طول رشته باید از 1 تا10 باشد", MinimumLength = 1)]
public string DateInstalltion { get; set; }
[Display(Name = "عکس ماشین")]
[Column(TypeName="Image")]
public byte[] Img { get; set; }
public string ImgType { get; set; }
[StringLength(50, MinimumLength = 1)]
[ForeignKey("ContractorId")]
public virtual Contractor Contractor { get; set; }
[Required]
public string ContractorId { get; set; }
}
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.