如何在.NET 5 的控制器操作中自动绑定数据?

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

我对 .NET 非常缺乏经验,所以请耐心等待。

我尝试发送帖子请求:

var postData = new FormUrlEncodedContent(new Dictionary<string, string>
    {
        { "YearValue", Convert.ToString( txtYear.Value) },
        { "Season", Convert.ToString( txtSeason.Value )},
        { "TestType", Convert.ToString( cboExamType.SelectedValue) },
        { "EmployeeID", Convert.ToString( _login.user.EmployeeID) },
        { "LoginName",_login.user.Code }
    });
postData.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
var req = client.PostAsync(url, postData);

并收到它:

[HttpPost("tests")]
public IActionResult Tests(int YearValue,int Season,int TestType,int EmployeeID,string LoginName)

这不起作用,因为它无法正确自动绑定数据,我必须分别向每个参数添加

[FromForm]
才能使其工作。

所以我的问题是:有没有办法让控制器动作自动正确绑定数据或者告诉它所有参数都是

[FromForm]
?非常感谢。

c# .net .net-5
1个回答
0
投票

最简单的选择是创建一个类型来保存数据,将其作为操作的参数并用相应的属性标记它:

public record TestModel(int YearValue, int Season, int TestType, int EmployeeID, string LoginName);

[HttpPost("tests")]
public IActionResult Tests([FromForm] TestModel input)
{
    // ...
}

请参阅ASP.NET Core 中的模型绑定文档。

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