[英]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.