Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET核心MVC从查询中获取模型属性的属性_C#_Asp.net Mvc_Asp.net Core - Fatal编程技术网

C# ASP.NET核心MVC从查询中获取模型属性的属性

C# ASP.NET核心MVC从查询中获取模型属性的属性,c#,asp.net-mvc,asp.net-core,C#,Asp.net Mvc,Asp.net Core,我有这些课程 public Customer { public int ID { get; set; } // [...] some other properties } public CustomerDetails { public Customer Customer { get; set; } // [...] some other properties } 我有这个控制器的动作 [HttpGet] [Route("{customer.id}&q

我有这些课程

public Customer
{
    public int ID { get; set; }
    // [...] some other properties
}

public CustomerDetails
{
    public Customer Customer { get; set; }
    // [...] some other properties
}
我有这个控制器的动作

[HttpGet]
[Route("{customer.id}")]
public async Task<IActionResult> Details([FromQuery]CustomerDetails model)
{
    // [...]
}
[HttpGet]
[路由(“{customer.id}”)]
公共异步任务详细信息([FromQuery]CustomerDetails模型)
{
// [...]
}
我还尝试了
[Route(“{model.customer.id}”)]
[Route({id}”)]
,并将
[FromQuery]
添加到
CustomerDetails.customer
但是
model.customer.id
总是
0

该操作的路径应为/customers/{model.customer.id}。我怎样才能做到这一点呢?

对于url

/customers/details/5 
将您的操作路由更改为:

[Route("~/customers/details/{customerId}")]
public async Task<IActionResult> Details(int customerId)
{
    // [...]
}
您需要此路由属性

[Route("~/customers/{customerId}")]
public async Task<IActionResult> Details(int customerId)
{
    // [...]
}
我们也会工作的

[Route("~/customers/details/{customerId}")]
public async Task<IActionResult> Details(CustomerDetails model)
{
    // [...]
}
[路线(“~/customers/details/{customerId}”)]
公共异步任务详细信息(CustomerDetails模型)
{
// [...]
}
我还尝试了[Route(“{model.customer.id}”)]和[Route({id}”)] 并将[FromQuery]添加到CustomerDetails中 model.customer.id始终为0

该操作的路径应为/customers/{model.customer.id}。怎么 我能做到这一点吗


它正在使用/customers/details?customer.id=5,但我希望它能够 be/客户/5

根据您的代码和描述,我想您可能希望从route而不是查询中获取参数

请尝试按以下方式修改您的代码:

  • 使用
    [FromRoute]
    属性

  • 根据您的描述,似乎您只想将客户id传递给操作方法,因此不需要使用CustomerDetails作为参数

     [HttpGet] 
     [Route("Test/Details/{customerid}")]
     public IActionResult Details([FromRoute]int customerid)
     {
         // [...]
         ViewBag.CustomerId = customerid;
         return View();
     }
    
  • 查看页面中的代码:

    @{
        ViewData["Title"] = "Details";
    }
    
    <h1>Details</h1>
    
    @ViewBag.CustomerId
    
    @{
    ViewData[“标题”]=“详细信息”;
    }
    细节
    @ViewBag.CustomerId
    
    结果如下:


    你能分享你用来调用GET操作的Url吗?它与/customers/details?customer.id=5一起工作,但我希望它是/customers/5他希望路线是
    /customers/5
    而不是
    /customers/details/5
    谢谢。我很感激。
     [HttpGet] 
     [Route("Test/Details/{customerid}")]
     public IActionResult Details([FromRoute]int customerid)
     {
         // [...]
         ViewBag.CustomerId = customerid;
         return View();
     }
    
    @{
        ViewData["Title"] = "Details";
    }
    
    <h1>Details</h1>
    
    @ViewBag.CustomerId