将逗号分隔值转换为通过http管道列出<string>

时间:2017-07-17 12:43:40

标签: c# asp.net-mvc asp.net-core-mvc

在我的API模型binder get请求中,我想将通过get请求传递的逗号分隔字符串转换为列表。我想只在我的模型中执行一次属性,因此IModelBinder不是最好用的,也许是TypeConverter?

我将如何做到这一点?

有些人似乎对模糊的问题感到困惑。 我想在http中间件之后添加映射,而不是在api调用之后。有许多方法,如itypeconverter,动作过滤器。这意味着我将不得不一遍又一遍地调用该方法。

所以,如果我有一个名为

的API调用
public IActionResult getUserConfigs(List<string>UserIds, list<int> permmisionIds)

他们发送请求,例如UserIds = 1,2,3,4,5,如何插入中间件组件以将字符串映射到列表。

这需要在点网核心项目中运作。

1 个答案:

答案 0 :(得分:-1)

由于您没有提供有关模型外观或任何代码的详细信息,因此我将构建一个简单的示例来回答我理解的问题......

这将接收一个字符串值,将其分成一个数组,并从分离的值构建一个模型实例:

public class User
{
    public string Username { get; set; }
    public string Password { get; set; }
}

public void ReceiveUserString(string source)
{
    string[] UserString = source.Split(',');

    var User = new User();
    foreach (string u in UserString)
    {
        User.Username = u[0];
        User.Password = u[1];
    }
}

然后可以将User对象保存到您的数据库中......或者您想要在API上使用它。

如果您要获取用户列表,则需要使用第二个分隔符来分割行:

string[] UsersFromString = source.Split('|');

foreach (string user in UsersFromString)
{
    var User = new User();
    string[] Fields = user .Split(',');

    User.Username = Fields[0];
    User.Password = Fields[1];
}

从你的问题:

  

我想将通过get请求传递的逗号分隔字符串转换为列表。

您可以稍微更改代码,使输出为List<User>

string[] UsersFromString = source.Split('|');

List<User> Users = new List<User>();
foreach (string user in UsersFromString)
{
    string[] Fields = user .Split(',');
    Users.Add(new User {User.Username = Fields[0], User.Password = Fields[1] });
}