在 ASP.NET Core 中,我四处搜索但无法弄清楚如何将列表从 View 传递到 Controller 。我可以创建一个 form
并传递一个 int
值,但不是 List<int>
.这是我必须传递的单个值
<form id="myForm">
<div class="modal-body">
<div class="form-group">
<label class="custom-label">
<div class="col-sm-3">
<input name="singleValue" type="text" class="form-control" />
</div>
</div>
<a href="#" class="btn btn-success" onclick="SaveForm('UpdateFunction', 'ControllerName')">Update</a>
</form>
我的 Controller 是
public IActionResult UpdateFunction(int singleValue)
{
var model = _context.TableName.SingleOrDefault(f => f.Id == singleValue);
model.Name = "Whatever";
_context.Update(model);
_context.SaveChanges();
return Json(true);
}
但是因为我想一次更新多个值而不仅仅是 int singleValue
, 我试过了
public IActionResult UpdateFunction(int[] list)
要么
public IActionResult UpdateFunction(List<int> list)
进入函数参数。我试过输入多个 int
带/不带逗号、括号的文本框中的值,没有任何作用,列表总是空的。我的目标是将列表或数组传递给 Controller ,然后循环遍历列表中的值。我的问题是如何传递 List<int>
到 Controller ?
最佳答案
以下是您的几个选项:
如果您有多个文本输入来从用户那里获取多个数字,那么您可以使用像
HttpContext.Request.Form[<FieldName>]
这样的表单对象来访问这些数字。 .您可以在单个文本框中获取多个值,并用逗号或空格分隔这些值。验证会很痛苦,但您可以获取字符串,将其切入 Controller 并使用它。
public IActionResult UpdateFunction(string multipleValues) { var ints = multipleValues.Split(new[] { ",", " " }, StringSplitOptions.RemoveEmptyEntries); }
使用自定义对象传回值。但是您必须在客户端创建 json 对象并使用 AJAX(jQuery?)回发。
public class ListOfInts { List<int> Ids{get;set;} }
在 View 中:
<script>
$(function(){
$("#btn").click(function(){
var o={};
o.Ids = [<get values from inputs and];
$.ajax({....});
});
});
</script>
所有这些都需要一些工作才能实际实现(我需要一杯咖啡),但这会给你一个想法。
关于c# - ASP.NET Core 如何将 List<int> 从 View 传递到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62523590/