使用BindAttribute的Prefix属性绑定到单个参数

问题描述 投票:1回答:1

我正在尝试将URL查询的单个参数绑定到action方法中的单个属性。

URL与以下内容相似:

/user/validate?Some.Prefix.Username=MyUserName

我的控制器和操作方法遵循以下原则:

public class UserController : Controller
{
    public IActionResult Validate([Bind(Prefix = "Some.Prefix")]string username)
    {
        return Ok(username);
    }
}

但是,当调用此操作方法时,username参数始终为null。似乎这是将BindAttribute与字符串参数而不是简单的类参数一起使用的结果。如果将string username参数替换为包含Username属性的简单类,则可以按预期捕获值。

public class UserController : Controller
{
    public IActionResult Validate([Bind(Prefix = "Some.Prefix")]ValidationModel model)
    {
        return Ok(model);
    }
}

public class ValidationModel
{
    public string Username { get; set; }
}

URL参数名称包含前缀时,是否有任何方法可以绑定到单个参数(而不是类参数?)>

我正在尝试将URL查询的单个参数绑定到action方法中的单个属性。该URL遵循以下几行:/user/validate?Some.Prefix.Username=MyUserName和我的控制器以及...

c# asp.net-mvc asp.net-core model-binding
1个回答
0
投票

对于诸如int和string的简单类型,Bind Prefix会覆盖参数的模型名称。以您的操作方法为例,DefaultModelBinder将查找名称“ Some.Prefix”而不是“ username”。

© www.soinside.com 2019 - 2024. All rights reserved.