مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

jaykob

عضویت از 1393/03/30

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

  • دوشنبه 12 بهمن 1394
  • 18:36
تشکر میکنم

سلام و احترام

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


@model IEnumerable<bookproject.Models.book.ViewModels.bookMainShowViewModel>

@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>
}
}



با تشکر

پاسخ های این پرسش

تعداد پاسخ ها : 3 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 13 بهمن 1394
  • 09:04

میتونید با Ajax مدیریت کنید

زمانی که کلید خرید زده شده کد کتاب و مقدار داخل input را به یک action در کنترلر ارسال کنید

برای شناسایی input میتونید از کد کتاب استفاده کنید

مثلا txt_102

کاربر سایت

سمیه حاتمی

عضویت از 1394/06/24

  • سه شنبه 13 بهمن 1394
  • 09:29

سلام

برای این کار و برای این که بتوان URL های شما بیشتر از سه قسمت باشد می توانید در داخل route.config خود تنظیمات زیر را انجام دهید .

routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}/{*others}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); 

با این الگو می توانید آدرس هایی با طول متغیر داشته باشید.و به هر تعداد دلخواه / در URL خود وارد کنید .البته در مورد مشکل شما به دلیل اینکه پارامتر اکشن شما با Id که به صورت پیش فرض توسط MVC قابل درک است ،، این پارامتر را با New کردن به اکشن فرستاده اید می توانید برای ارسال تعداد کتاب درخواستی هم یک متغیر int به نام مثلا OrderCount در نظر بگیریدو آن را با new به تابع ارسال کنید .

اگر این روش جواب نداد از انجا که حدس می زنم از Pattern سه قسمتی خود MVc که به صورت پیش فرض وجود داشته است استفاده می کنید ، برای فراخوانی این اکشن با دو پارامتر می توانید به صورت های زیر عمل کنید

اگر از تگ a استفاده می کنید چیزی شبیه این

<a href="/book/AddBook/id?orderCount=@item.count"></a>

به عنون مثال اکشن زیر با دو پارامتر را در نظر بگیرید

public ActionResult GetImages(string artistName, string apiKey)

فراخوانی ها می تواند با فرمت زیر باشد

/Artist/GetImages/?artistName=cher&apiKey=XXX
public ActionResult GetImages(string id, string apiKey)

اما در اکشن بالا چون Id به صورت پیش فرض توسط mvc قابل درک است می توانیم نحوه فراخوانی اکشن را به صورت زیر داشته باشیم

/Artist/GetImages/cher?apiKey=XXX

اما اگر بنا دارید هر پارامتر شما به صورت جداگانه ای به / جدا شود یعنی به صورت زیر باشد

/Artist/GetImages/cher/api-key

باید در route.config خود تغییرات ایجاد کنید

routes.MapRoute(
            "ArtistImages",                                              // Route name
            "{controller}/{action}/{artistName}/{apikey}",                           // URL with parameters
            new { controller = "Home", action = "Index", artistName = "", apikey = "" }  // Parameter defaults
        );

امیدوارم کمک کرده باشم

کاربر سایت

jaykob

عضویت از 1393/03/30

  • سه شنبه 13 بهمن 1394
  • 13:20

سلام

 

مشکل من با ارسال پارامتر هست ما زمانی از foreach استفاده می کنیم چطور یک کادر input یا textboxfor یا ... بزاریم چون اونجا به item دسترسی داریم و مدلی در کار نیست که کاربر تعداد رو وارد کنه بعد ما بتونیم ارسال کنیم . تمام بحث routing که فرمودید رو من می دونستم فقط الان مشکل اصلی نحوه ارسال تعداد کتابی که کاربر وارد می کنه است این مورد رو یک راهکار می خوام با ajax هم سعی کردم نتونستم پیاده کنم ...

 

تشکر

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)