.Net 6 MVC表单集合值(带小数)

hwamh0ep  于 2023-03-20  发布在  .NET
关注(0)|答案(2)|浏览(125)

我有一个复选框集合,其中包含逗号的值。

<form>
  <fieldset>
    <legend>Checkbox Collection</legend>
    <input type="checkbox" name="collection" value="1" id="check1">
    <label for="check1">Value 1</label><br>
    <input type="checkbox" name="collection" value="2,3" id="check2">
    <label for="check2">Value 2,3</label><br>
    <input type="checkbox" name="collection" value="4" id="check3">
    <label for="check3">Value 4</label><br>
  </fieldset>
</form>

是否有办法更改从表单集合返回的分隔符。因为如果所有三个都选中,则在后端的结果
1,2,3,4
而那是错的,我想它说1;所以集合用分号分隔,或者我会得到三个条目,然后循环。
控制器中的后端代码为

[ValidateAntiForgeryToken]
public ActionResult getForm(string id, string id2)
{
    Backend.Document doc = null;            
    try
    {
        FormCollection form = (FormCollection)HttpContext.Request.Form;
var cvalues=form["collection"]
kzipqqlq

kzipqqlq1#

还有一种更简单的方法,不需要改变分隔符,复选框的名称是collection,www.example.com核心的模型绑定器asp.net可以使用它,传入一个带有name集合的字符串数组参数,框架将为您完成剩下的工作:

@{
    ViewData["Title"] = "Home Page";
}

<form method="post">
    <fieldset>
        <legend>Checkbox Collection</legend>
        <input type="checkbox" name="collection" value="1" id="check1">
        <label for="check1">Value 1</label><br>
        <input type="checkbox" name="collection" value="2,3" id="check2">
        <label for="check2">Value 2,3</label><br>
        <input type="checkbox" name="collection" value="4" id="check3">
        <label for="check3">Value 4</label><br>
    </fieldset>
    <input type="submit" value="Send" />
</form>
[HttpPost]
public IActionResult Index(string[] collection)
{
    foreach (var stringValue in collection)
    {
        //parse to decimal or whatever
        //work with it
    }
    
    return View();
}
zysjyyx4

zysjyyx42#

您可以使用JavaScript来实现这一点。

var checkboxes = document.getElementsByName('collection');
for (var i = 0; i < checkboxes.length; i++) 
{
  checkboxes[i].name = checkboxes[i].name.replace(/collection/g, 'collection' + i);
}

相关问题