ASP.NET Core MVC:提交表单时是否可以遍历表单字段?
我阅读了有关如何在 NET Core MVC 项目中绑定表单字段并调用控制器参数的部分 https://metanit.com/sharp/aspnet5/7.8.php
该方案非常严格:您有一个包含两个字段的表单 - 它将由一个控制器方法处理,该控制器方法恰好采用两个参数。
例如,这个视图
@{
ViewData["Title"] = "Login";
}
<form method="post">
<label>Логин:</label><br />
<input type="text" name="login" /><br /><br />
<label>Пароль:</label><br />
<input type="text" name="password" /><br /><br />
<input type="submit" value="Отправить" />
</form>
对应于以下控制器方法:
[HttpPost]
public IActionResult Login(string login, string password)
{
string authData = $"Login: {login} Password: {password}";
return Content(authData);
}
添加字段?方法中应该还有一个参数!
一般来说,这是可以理解的,而且在最明显的情况下,它会让生活更轻松。
我的印象是,在这样的项目中,我无法在控制器中编写一个方法来“捕获”来自任意表单的 POST,然后可以遍历其字段。这种事情很少见,但确实会发生。
肤浅的谷歌搜索也没有产生任何结果。
当然,你可以用javascript将所有表单字段的所有值收集到一个隐藏字段中,然后单独提交这个字段,但不知何故……过度工程。
请告诉我,如何编写和处理具有任意数量字段的表单,以便在控制器中您可以简单地迭代它们?
谢谢!
如果我们只讨论通过表单发送的参数,那么您可以通过以下方式访问它们
Request.Form:那么你传递多少参数就会这么多。事实上,当你在一个方法中声明参数时,它们首先来到
Request.Form,然后一些内置ModelBinder将它们取出Request.Form并作为普通参数传递。在我提供的代码中,您只需直接读取来自请求的内容。