[英]MVC.Net Controller path with multiple parameters
[Route("add/user/{name}&{state}&{zipcode}&{indeFlag}&{email}")]
public async Task<ActionResult> CreateUser(
string name,
string state,
string zipcode,
Boolean indeFlag,
string email)
{
}
上面的示例中如何定義控制器方法的路由,以便我可以將正確的數據傳遞給該方法?
請幫忙。
您可以像這樣傳遞每個參數:
[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
}
}
網址將為“ / user / add”,並帶有表格形式的數據。
順便說一下,其他解決方案更好的方法是使用視圖模型類,如下所示:
[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()
{}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.