ورود

View Full Version : سوال: نحوه ثبت کتاب در فروشگاه و مشکل در ارسال تعداد کتاب



jaykob
دوشنبه 12 بهمن 1394, 18:05 عصر
سلام و احترام

من در یک بخش از برنامه خودم می خوام سفارش یکسری کتاب بگیرم همه کتاب هام رو با foreach رندر می کنم و پایین هر کتاب یک actionlink خرید گذاشتم که bookid رو به یک اکشن می بره و من این کتاب رو برای اون نفر ثبت کنم ولی الان مشکل اینه که می خوام کاربر تعداد کتابی رو هم که می خواد مثلا از این کتاب ۵ نسخه می خواد رو هم به اون اکشن بفرستم نمی دونم باید چکار کنم یک input نوع html ای ساده گذاشتم چون textboxfor و ... نمی تونم که استفاده کنم . ممنون می شم راهنمایی کنید این کار رو بتونم انجام بدم . نمونه کدم هم به شکل زیر هست :




@model IEnumerable<bookproject.Models.book.ViewModels.bookMainShowVie wModel>

@Html.BeginForm("Addbook","book")
{
@foreach (var item in Model)
{
<div class="entry one-fourth wow fadeInRight">
<figure>
<a href="#openModal"><img src="/images/img6.jpg" alt="@item.Name" /></a>
</figure>
<div class="container">
<h2>@item.Name</h2>
<div class="actions">
<div>
<h2>@item.price</h2>
</div>
</div>
<div class="f-row bwrap">
<input type="text" placeholder="تعداد کتاب"/>
</div>

<div class="f-row bwrap">

@Html.ActionLink(
"خرید کتاب", // linkText
"Addbook", // actionName
"book", // controllerName
new
{
// routeValues
bookId = @item.bookId

},
null // htmlAttributes
)
</div>
</div>
</div>
}
}






با تشکر

r4hgozar
دوشنبه 12 بهمن 1394, 18:40 عصر
سلام.
اینجوری که من متوجه شدم شما می خواین شبیه دیجی کالا کتاب های ثبت شده رو که مثلا در سبد خرید هست اضافه کنید به دیتابیس.

شما اول باید یک سبد خرید داشته باشید. که نام کالا حالا هرچی هست کتاب یا هرچی و بعد تعداد اون هر دو در کوکی ذخیره بشه این کار رو با کوکی انجام میدن. مثل سبد خرید دیجی کالا و بقیه سایت ها.
بعد هر وقت خواستین می تونین به راحتی اون ها رو اضافه و کم کنید و بعد هر وقت کسی خواست اون رو پرداخت کنه به دیتابیس اضافه کنید.
نباید همون اون اون رو در دیتابیس اضافه کنید.

من یه کد کوکی بصورت تست برا خودم نوشتم اما متاسفانه درست کار نمی کنه و باگ داره. شاید دوستان براتون قرار بدن.

اما اینکه زیر هر کتاب لینک بزاری و در جا در دیتابیس ذخیره بشه بطور معمول این کار انجام نمیشه در فروشگاه ها.

jaykob
دوشنبه 12 بهمن 1394, 19:16 عصر
سلام

ممنون از شما . ولی من اصلا نمی خوام با کوکی و ... کار کنم و به صورت سبد خرید باشه . حتما و حتما می خوام بنا بر دلایلی که دارم که کاربر روی خرید کلیک کرد کد کالا و تعداد رو به عنوان یک رکورد در دیتابیس ذخیره کنم .

ممنون می شم در این رابطه دوستان راهنمایی کنند

با تشکر

hakim22
دوشنبه 12 بهمن 1394, 21:10 عصر
باید برای Input یک Name تعریف کنید. این Name باید به صورت "[BookCount[@i" باشه . البته بجای BookCount میتوانید هرچیزی بنویسید. ولی i یک شمارنده هست که درون حلقه مقدار دهی میشه.

وقتی فرم رو Submit میکنید لیست تعداد به صورت یک آرایه به سرور ارسال میشه. باید در مدل همچین متغیری داشته باشید : IEnumerable<int> BookCount

Model Binder در ASP مقادیری که Name دارای [] هست رو به آرایه از همون نوع تبدیل میکنه. شما میتوانید مدل رو هم به همینش شکل ارسال کنید. شخصا ترجیح میدم بجای داشتن یک متغیر جدا یک IEnumerable<BookInputModel> داشته باشم.

به این صورت که اتریبیوت Name به شکل Book[i].id و Book[i].Count مقدار دهی بشن. باید در اکشن مربوطه از IEnumerabl<BookInputModel> رو بگیرید .


class BookInputModel
{
int Id {get;set;}
int Count {get;set;}
}


public ActionResult AddBook(IEnumerable<BookInputModel> books){

}