繁体   English   中英

具有多个参数的MVC.Net控制器路径

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM