你可以通過每個參數是這樣的:
[Route("[controller]")]
public class UserController : Controller
{
// < MVC 6 :
[Route("add")]
[HttpPost]
public async Task<IActionResult> Create(
string name,
string state,
string zipcode,
bool indeFlag,
string email)
{
// Your code here
}
// If you want call this in a simple get query
[Route("quickadd")]
[HttpGet]
public async Task<IActionResult> Create(
string name,
string state,
string zipcode,
bool indeFlag,
string email)
{
// Your code here
}
// MVC 6 :
[Route("add")]
[HttpPost]
public async Task<IActionResult> Create(
[FromForm]string name,
[FromForm]string state,
[FromForm]string zipcode,
[FromForm]bool indeFlag,
[FromForm]string email)
{
// Your code here
}
// If you want call this in a simple get query
[Route("quickadd")]
[HttpGet]
public async Task<IActionResult> QuickAdd(
[FromQuery]string name,
[FromQuery]string state,
[FromQuery]string zipcode,
[FromQuery]bool indeFlag,
[FromQuery]string email)
{
// Your code here
}
}
將URL「/用戶/添加」用數據形式。
其他的解決方案,以更好的方式,是使用一個視圖模型類,像這樣:
[Route("[controller]")]
public class UserController : Controller
{
[Route("add")]
[HttpPost]
public async Task<IActionResult> Create(
AddViewModel model)
{
if (ModelState.IsValid)
{
// Put your code to create user here
}
else
{
// Put your code for error here
}
}
}
視圖模型允許你使用數據註釋做一些檢查,像必填字段,或格式檢查。
using System.ComponentModel.DataAnnotations;
public class AddViewModel
{
[Required(ErrorMessage = "Please enter a name")]
[Display(Name = "Username")]
[DataType(DataType.Text)]
public string Name { get; set; }
public string State{ get; set; }
[Required]
[DataType(DataType.EmailAddress)]
public string Email{ get; set; }
[Required]
[DataType(DataType.PhoneNumber)]
public string PhoneNumber{ get; set; }
public AddViewModel()
{}
}
你想在這種情況下做什麼,通過這個你想通過只輸入一個網址添加用戶。沒有具體的頁面。 – Viplock
這是您正在嘗試的Post操作嗎? –
正如Ravi所說,這看起來應該是一個帖子,所以你應該用[HttpPost]屬性來裝飾它。 我看到你正在使用&,它使得它看起來像你試圖通過GET來做到這一點。 這將是更典型的,因爲你在請求的身體張貼這些值,作爲JSON。 然後你的路線將不包含這些參數,它只是添加/用戶,這是更容易使用。 –