بسته

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

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
دسته بندی ها