簡體   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