نحوه گرفتن پراپرتی های CategorySepcification در Command

سوال شده توسط: bzmind ‌

تاریخ ثبت: ۱۴۰۱/۰۲/۲۲

بازدید: 294

پاسخ: 8

تگ: Asp.net Core


سلام استاد، خسته نباشید، یه سوال داشتم، من یه کلاس CategorySepcification دارم، و توش 3 تا پراپرتی بغیر از آیدی هست، Title، Description، IsImportantFeature

اون IsImportantFeature مثلا مشخص میکنه که این مشخصه، بالا کنار محصول به عنوان ویژگی هاش نشون داده بشه یا نه، حالا من توی کامند، ینی توی خود API مربوط به CreateCategoryCommand من باید چجوری این پراپرتی هارو از یوزر بگیرم، باید یه دیکشنری بسازم که یه کلید داره به عنوان Title، و بعد بجای مقدار هم، یه آبجکت جدا بسازم که توش Description، IsImportantFeature اینارو داره؟ بعد اون آبجکت ینی فقط مخصوص همین کامند هست و فقط توی لایه اپلیکیشن داریم ازش استفاده میکنیم، این کار درسته که یه کلاس جدید تعریف کنیم فقط واسه همین کار؟ اونم توی لایه اپلیکیشن؟ اگر راه بهتر و ساده تری هست نسبت به اینم بگید، ممنون.

پاسخ ها
user

محمد اشرافی

سلام سلامت باشید ، اصلا لازم نیست دیکشنری  بسازید ، یه مدل براش بسازید توی لایه application و توی command بگید یه List از اون نوع رو باید پاس بده

user

bzmind ‌

راست گفتید، من ذهنم قفل شده بود رو همین دیکشنری، بعد استاد یه مشکل دیگم هست، الان من اگر توی اکشنِ کنترلر، پشت پارامتر اگر بنویسم [From Form]، بعد تمام اطلاعات درست ارسال میشه بجز اونایی که به صورت json ارسال میشن، چجوری میشه از طریق فُرم، هم جیسون ارسال کرد هم بقیه اطلاعات رو؟

user

محمد اشرافی

اگر بخواین Json دریافت کنید توی FormData باید یه پراپرتی از نوع String داشته باشید و توی فرانت بگید که اون مقدار مدنظر رو به Json تبدیل کنن و برای شما ارسال کنن

user

bzmind ‌

استاد ببخشید کامل متوجه نشدم، FormData چیه دقیقا، بعد من الان اون دیکشنری رو به لیست تبدیل کردم و الان CreateCategoryCommand این چیزارو تو پارامتر هاش داره:

اینم اکشنش توی کنترلر:

و بعد توی Swagger اینجوری نمایش میده:

user

محمد اشرافی

خوب اینو از FromForm استفاده نکنید ، زمانی FromForm استفاده میشه که قرار باشه یه فایلی Upload بشه ، همون FromBody بزارید که بصورت Json ارسالش کنه

user

محمد اشرافی

و این مشکل هم احتمالا Swagger پشتیانیش نمیکنه ، تست کنید ببینم با PostMan هم این مشکل هست یا نه ولی درکل توی این مورد شما باید از FromBody استفاده کنید

user

bzmind ‌

راستی عکس رو باید از کنترلر پروداکت میفرستادم، اشتباه شد، اون موقع داشتم با کتگوری تست میکردم، آره برای کتگوری از FromBody استفاده میکنم، ولی پروداکت چون عکس قراره اپلود شه، هم فایل و هم json کنار هم باید ارسال بشن، اینجوریه کامندش:

اینم توی Swagger:

اون 2 تا فیلد آخر ینی CustomSpecifications و ExtraDescriptions به صورت JSON هستن که اصلا درست ثبت نمیشن.

بعد من کُلی سرچ زدم، فک کنم باید یه Custom Model Binder بنویسم مخصوص اینجور جاها که قراره دیتا هم

multipart/form-data باشه هم application/json، البته فعلا سر در نمیارم زیاد یکم پیچیدست، نمیدونم اصلا بدردم میخوره یا نه ولی، باید تست کنم، شما تو پروژه ای به همچین موقعیتی برخوردید تا حالا؟

user

محمد اشرافی

توی این حالت یه خورده پیچیده میشه ، مطمعا نیستم که بشه Array توی FormData ارسال کنید ( با Javascript تست کنید ببینم میشه یا نه ) 

اگر نشد میتونید از نوع string دریافتش کنید که توی Client یه json بهتون پاس بدن ، بعد توی برنامه اون json رو تبدیل به List کنید

برای ثبت پاسخ باید خود شوید

محبوب ترین مقالات