تكرار السؤال: …
الإجابة المختصرة
يستخرج البيانات من الطلب ويحولها لكائنات C# قوية الأنواع؛ حيث يقرأ [FromBody] نص الـ JSON، ويقرأ [FromRoute] قيم مسار الـ URL، ويقرأ [FromQuery] متغيرات الاستعلام.
الشرح
يقوم الـ Model Binder بفحص معاملات دالة الـ Action ومطابقتها بمصادر الطلب المختلفة. يمكن استخدام سمات صريحة لتوجيه المحرك: [FromRoute] لمسارات مثل /api/orders/{id}، و [FromQuery] لخيارات الفلترة /orders?page=2، و [FromBody] لقراءة جسم الـ POST/PUT عبر JSON Formatter، و [FromHeader] للترويسات، مع تطبيق قواعد DataAnnotations مثل [Required] و [Range] تلقائياً.
مثال بالكود
[HttpPost("users/{departmentId}")]
public async Task<IActionResult> CreateUser(
[FromRoute] int departmentId,
[FromQuery] bool notify,
[FromBody] CreateUserDto dto) { ... }أخطاء شائعة
- محاولة قراءة أكثر من معامل واحد بواسطة [FromBody] لنفس الـ Action، حيث لا يمكن قراءة تدفق الطلب كـ JSON إلا مرة واحدة.