ورود

View Full Version : سوال: اضافه کردن textbox بصورت داینامیک و ذخیره کردن آن



gama_slv
جمعه 05 آبان 1396, 11:25 صبح
چطوری بعد از اضافه کردن تگ بصورت داینامیک تگ ها رو به مدل وصل کنم و در دیتابیس ذخیره کنم.
برای اضافه کردن تگ ها از این کد استفاده کردم.

<button id="Add">Click to add textbox</button>
<button id="Remove">Click to remove textbox</button>
<div id="textboxDiv"></div>
<div id="textboxDive"></div>
<script>


$(document).ready(function() {
$("#Add").on("click", function() {
$("#textboxDiv").append("<div><br><input type='text'/><br></div>");
$("#textboxDive").append("<div><input type='text'/></div><br>");
});
$("#Remove").on("click", function() {
$("#textboxDiv").children().last().remove();
$("#textboxDive").children().last().remove();
});
});
</script>




اگر بخوام تگ تاریخ اضافه کنم چی کار باید بکنم؟

Moien Tajik
جمعه 05 آبان 1396, 11:48 صبح
برای دریافت مقادیر Textbox های داینامیک ، اول باید برای Textbox هایی که اضافه میکنید name بزارید تا در اکشن قابل دریافت باشن.
در ورودی اکشن آرایه ای از مقادیر سمت view رو دریافت کنید و روی اون ها foreach بزنید و به مدلتون مقادیرش رو Bind کنید :


public ActionResult MyAction(params string[] dynamicTextboxes)
{
foreach(var item in dynamicTextboxes)
{
var model = new Model
{
property1 = item,
// ...
};
}
}




اگر بخوام تگ تاریخ اضافه کنم چی کار باید بکنم؟
اگر منظورتون input از نوع date هست ، فرقی نمیکنه با input معمولی ; فقط باید براش name قرار بدید که بتونید در اکشن دریافتش کنید.

gama_slv
جمعه 05 آبان 1396, 12:54 عصر
نمیزاره چنین اکشنی بسازم ارور not all code paths return value میده. و چون بعضی از فیلد های مدل int هست باز نمیشه.
خواستم همین کا رو تو اکشن create انجام بدم کلا نشد.

[HttpPost] [ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ConfessionId,ContractId,Confessiondesc")] Confession confession, params string[] dynamicTextboxes)
{
if (ModelState.IsValid)
{
confession.Confessiondesc = Server.HtmlDecode(confession.Confessiondesc);
db.Confessions.Add(confession);
db.SaveChanges();
return RedirectToAction("Index");
}


ViewBag.ContractId = new SelectList(db.Contracts, "ContractId", "UserId", confession.ContractId);
return View(confession);
}

Moien Tajik
جمعه 05 آبان 1396, 13:29 عصر
اون اکشن که بنده براتون فرستادم صرفا برای مثال بود تا نمونه ای باشه که ازش استفاده کنید و همچنین شما باید برای textbox هایی که سمت ویو میسازید name attribute با value ی dynamicTextboxes قرار بدید تا سمت اکشن قابل دریافت باشن.

سمت ویو هرچیزی باشه شما با عوض کردن type پارامتر ورودی میتونید دریافتش کنید فرقی نمیکنه :


params string[]
params int[]
params double[]