เมื่อ ASP.NET Web API เรียกใช้เมธอดบนคอนโทรลเลอร์ จะต้องตั้งค่าสำหรับพารามิเตอร์ ซึ่งเป็นกระบวนการที่เรียกว่าการโยงพารามิเตอร์
ในการผูกโมเดล (พารามิเตอร์การดำเนินการ) ซึ่งโดยปกติจะมีค่าเริ่มต้นเป็นตัวจัดรูปแบบ จาก URI เราจำเป็นต้องตกแต่งด้วยแอตทริบิวต์ [FromUri] FromUriAttribute สืบทอดจาก ModelBinderAttribute โดยให้คำสั่งลัดแก่เราในการสั่ง Web API ให้ดึงพารามิเตอร์เฉพาะจาก URI โดยใช้ ValueProviders ที่กำหนดไว้ใน IuriValueProviderFactory แอตทริบิวต์นั้นถูกปิดผนึกและไม่สามารถขยายได้อีก แต่คุณเพิ่ม IuriValueProviderFactories แบบกำหนดเองได้มากเท่าที่คุณต้องการ
แอตทริบิวต์ [FromBody] ที่สืบทอดคลาส ParameterBindingAttribute ใช้เพื่อเติมพารามิเตอร์และคุณสมบัติของพารามิเตอร์จากเนื้อหาของคำขอ HTTP รันไทม์ ASP.NET มอบหมายความรับผิดชอบในการอ่านเนื้อหาไปยังฟอร์แมตเตอร์อินพุต เมื่อใช้ [FromBody] กับพารามิเตอร์ประเภทที่ซับซ้อน แอตทริบิวต์ที่มาที่มีผลผูกพันใดๆ ที่ใช้กับคุณสมบัติของพารามิเตอร์นั้นจะถูกละเว้น
ตัวอย่างแอตทริบิวต์ FromUri −
ตัวอย่าง
using System.Collections.Generic;
using System.Web.Http;
namespace DemoWebApplication.Controllers{
public class DemoController : ApiController{
public IEnumerable<string> Get([FromUri] string id, [FromUri] string name){
return new string[]{
$"The Id of the Student is {id}",
$"The Name of the Student is {name}"
};
}
}
} สำหรับตัวอย่างข้างต้น ให้เราส่งค่าของ id และชื่อใน URI เพื่อเติมลงในตัวแปรที่เกี่ยวข้องในเมธอด Get
http://localhost:58174/api/demo?id=1&name=Mark
ผลลัพธ์
ผลลัพธ์ของโค้ดด้านบนคือ

ตัวอย่างแอตทริบิวต์ FromBody −
ตัวอย่าง
ให้เราสร้างโมเดลนักศึกษาที่มีคุณสมบัติดังต่อไปนี้
namespace DemoWebApplication.Models{
public class Student{
public int Id { get; set; }
public string Name { get; set; }
}
} รหัสคอนโทรลเลอร์ −
ตัวอย่าง
using DemoWebApplication.Models;
using System.Collections.Generic;
using System.Web.Http;
namespace DemoWebApplication.Controllers{
public class DemoController : ApiController{
public IEnumerable<string> Get([FromBody] Student student){
return new string[]{
$"The Id of the Student is {student.Id}",
$"The Name of the Student is {student.Name}"
};
}
}
} สำหรับตัวอย่างข้างต้น ค่าสำหรับนักเรียนจะถูกส่งต่อในเนื้อหาคำขอ และมีการแมปกับคุณสมบัติที่สอดคล้องกันของวัตถุ Student ด้านล่างนี้คือคำขอและการตอบกลับโดยใช้บุรุษไปรษณีย์
