【发布时间】:2019-09-11 10:08:43
【问题描述】:
action 方法的第二个参数值始终为 null。在 uri 中,查询字符串包含状态和类型的值。但我只能为状态获得价值。类型参数始终为空。
我已经尝试过这个问题中回答的属性路由。 https://stackoverflow.com/a/22962461/8155033
我添加了 [Route("Vehicles")] [Route("Vehicles/{status}/{type}")] 属性路线,如该答案中所述。它与 https://localhost:44355/Vehicles/8481aaed-13f8-4eee-921b-20853ab9ddf0/c07f4dd0-44d2-4c82-b174-76849d010c95%2F
车辆控制器
public async Task<IActionResult> Index(Guid? status, Guid? type )
{
var applicationDbContext = _context.Vehicles.Where(v=> v.VehicleStatusId == status && v.VehicleTypeId == type).Include(v => v.VehicleStatus).Include(v => v.VehicleType);
return View(await applicationDbContext.ToListAsync());
}
我想使用它来获取参数的值。 https://localhost:44355/Vehicles?status=8481aaed-13f8-4eee-921b-20853ab9ddf0&type=c07f4dd0-44d2-4c82-b174-76849d010c95%2F
它获取状态的值,但类型始终为空。
当我按下提交按钮时,我得到了上面的查询字符串。
<div>
<form name="searchbox">
<div class="form-group">
<div class="form-group">
@{
var vStatuses = ViewBag.vStatuses as ICollection<VehicleStatus>;
foreach (var vStatus in vStatuses)
{
<input type="radio" name="status" value=@vStatus.Id />
@vStatus.Label
}
}
</div>
<div class="form-group">
@{
var vTypes = ViewBag.vTypes as ICollection<VehicleType>;
foreach (var vType in vTypes)
{
<input type="radio" name="type" value=@vType.Id/>
@vType.Label
}
}
</div>
</div>
<input class="btn" type="submit" />
</form>
</div>
【问题讨论】:
-
如果最后去掉 %2F 会怎样?
-
第二个查询字符串值不是有效的 Guid
-
@NineBerry 你知道为什么会这样吗?当我按下提交按钮时,我将这些值作为单选按钮我得到了这个查询字符串
-
如果你能分享minimal reproducible example,那就太棒了。
-
如果在
/前面加一个空格会怎样?
标签: c# asp.net-mvc asp.net-core