جستجو
محصولات
    منو بسته
    2 دی 1403

    استفاده از منطق ثبت نام برای مدل پرداخت

    5 سال پیش
    #1727
    سلام به شما مهندسان عزیز
    آیا امکانش هست بعضی کلاس ها مثل RegisterModel رو در کلاس دیگه ای مثل CheckoutModel توسعه بدیم یا بازنویسی کنیم؟ که فرم ورود برای کاربر به جای http://localhost/register در http://localhost/onepagecheckout باشه. اما منطق پشت اون در RegisterModel
    محاسبه بشه.
    چیزی مثل این، قبلا طراحی شده؟ کجا؟
    من واقعا سر این موضوع گیر کردم
     [CheckAccessPublicStore(true)]
            public virtual IActionResult Register(RegisterModel model, string returnUrl, bool captchaValid)
            {
            }
    // منطقی که من قصد استفاده ازش رو دارم

    اما آیا باید از صفحه پرداخت، یک پست Ajax رو با داده هایی که توی فرم ثبت نام سفارشی (در داخل صفحه پرداخت) جمع آوری کردم، به http://localhost/register/ ایجاد کنم؟ در غیر این صورت به نظر نمی رسه که از IActionResult ثبت نام استفاده میکنم، دقیقا مثل زمانی که URL مربوطه که تنظیم شده، فراخوانی می شه. و اگر نتیجه ی ajax آدرس url رو به RegisterResult ریدایرکت کنه، می توانم ازش توی فرم خودم استفاده کنم؟

    امیدوارم توضیحاتم واضح بوده باشه
    نقل قول
    0
    5 سال پیش
    #1728
    سلام
    بنظر میاد دارید برای این کار از یک پلاگین استفاده میکنید. میتونید مدلی ایجاد کنید که از مدل ثبت نام تبعیت کنه. مثل:

    public partial class ExtendedRegisterModel : RegisterModel

    بعد از اون میتونید مدل فاکتورها و کنترلرهاتون رو به ExtendedRegisterModel تغییر بدید. عناصر جدیدی بهش اضافه کنید و مدل رو در view خودتون به ExtendedRegisterModel تغییر بدید.
    نقل قول
    0
    5 سال پیش
    #1729
    ممنون اما من از پلاگین استفاده نمیکنم. ایده ی اصلی اینه که فرمی داخل صفحه "پرداخت در یک صفحه" ایجاد کنم. این کدی هست که توی Views\Checkout\OnePageCheckout.cshtml هست:

    form asp-route="Register" asp-route-returnurl="@Url.RouteUrl("Register")" method="post" id="register-form">
                                <input asp-for="FirstName" />
                                <nop-required />
                                <span asp-validation-for="FirstName"></span>
                                <input asp-for="LastName" />
                                <nop-required />
                                <span asp-validation-for="LastName"></span>
                                <div class="inputs">
                                    <label asp-for="Email" asp-postfix=":"></label>
                                    <input asp-for="Email" />
                                    <nop-required />
                                    <span asp-validation-for="Email"></span>
                                </div>

                                <input asp-for="Password" />

                                <input asp-for="ConfirmPassword" />
                                <input type="submit" id="register-button" class="button-1 register-next-step-button" value="@T("Account.Register.Button")" name="register-button" />

                            </form>


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

    public virtual IActionResult Register(RegisterModel model, string returnUrl, bool captchaValid)

    اما منو به صفحه ی ثبت نام هم ریدایرکت میکنه. و اگه مجددا ریدایرکتش کنم به صفحه ی پرداخت، ارورهای ModelState Dictionary رو اگه موجود باشه، دریافت نمیکنم.
    درواقع داشتم فکر میکردم از ریدایرکت با استفاده از ایجکس استفاده کنم اما نمیدونم چطور این کارو انجام بدم و فرم رو منتقل کنم به

    public virtual IActionResult Register(RegisterModel model

    اصلا مطمئن نیستم که پاسخ های ایجکس با داده های ModelState Dictionary برای کنترل کردن خطاها ست میشن یا نه.
    نقل قول
    0
    5 سال پیش
    #1735
    پس شما میتونید آیتم هاتون رو به موجودیت مشتری اضافه کنید. مدل رو ثبت کنید، PrepareRegisterModel در مدل مشتری و ویو خودتون رو آپدیت کنید و یا یک موجودیت و مدل دیگه بجاش بسازید و هر دو مدل رو در ویو خودتون به شکل  
    @model Tuple<Model1, Model2>
    برگردونید. فقط یادتون باشه حتما tuple helper ها رو در کنترلرتون اضافه کنید و tupleها رو هم به ویو خودتون پاس بدید.
    نقل قول
    0
    09127857628