具有多个同名单选按钮的表单

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

我目前正在编写一个程序来比较基于主键的多个数据库中的数据(我使用VS17和使用C#razor页面和HTML的MVC架构)。为了简短起见,我的程序在多个数据库中显示来自同一个表的数据字段(理论上是不同数据库之间存在不匹配的记录),我使用主键进行比较。我将它们显示为单选按钮,以便用户可以选择正确的值,然后相应地更新数据库。

我发布表单数据并使用模型绑定,以便我可以创建发送到我的控制器的项目列表。这是因为我向控制器发送了不同数量的数据,因此它们必须具有相同的名称才能使模型绑定正常工作(或者至少据我所知)。

我遇到的问题是在我的视图中使用此特定代码:

@for (int x = 0; x < Model.ContextTables.Count(); x++)
{
    for (int y = 0; y < Model.ContextTables[x].Count(); y++)
    {
        if (Model.ContextTables[0][y] != Model.ContextTables[x][y])
        {
            if (x == 1)
            {
                <h5>Column: @Model.Columns[y]</h5>
                <input name="Update_Columns" id="Update_Columns" type="hidden" [email protected][y]>
                <text>@Model.DBNames[0]:&emsp;&emsp;&emsp;</text><input type="radio" name="Records" value="@Model.ContextTables[0][y]" checked="checked"> @Model.ContextTables[0][y] <br />
            }
            <text>@Model.DBNames[x]:&emsp;&emsp;&emsp;</text><input type="radio" name="Records" value="@Model.ContextTables[x][y]" > @Model.ContextTables[x][y] <br />
        }
    }
}

基本上它是如何工作的,如果有2个(或更多)列不匹配,它会创建更多的单选按钮集。

例如,假设我们有主键“Stack Overflow”,在2个数据库之间,变量“C#”和“HTML”是不同的。我的网页看起来或多或少像这样:

主要关键:堆栈溢出

差异:

C#

t1-“值1”t2-“值2”

HTML

t1-“值1”t2-“值2”

使用单选按钮, - 字符位于值的旁边。当只有一个不匹配的列时,这种方法有效,但是当有2个或更多时,我只能从所有列表中选择1个单选按钮(这不是预期的,但我知道这是因为所有的“名称”我的单选按钮是一样的)。

预期的性能是每列都有它自己独立的单选按钮集,但它们大多数都是POST,其名称与创建列表相同(如上所述)。这是因为Action方法不能在不作为列表的情况下采用无限变化的输入。

例如,如果我选择了C#,value1和HTML,则value1的目标结果是两者都映射到名为“Records”的表单数据,这样Records [0]将从C#列输出value1而Records [1]将输出在控制器中使用时,HTML列中的value1。

我本质上要求的是帮助/修复,无论是使用C#,Javascript,J-Query还是在HTML本身(PHP都不可能),来解决这个问题。

我意识到这可能看起来散乱和凌乱,但我已经在整个项目上工作了大约一个半星期,我的大脑完全被炒了。如果我能做些什么来提供额外的清晰度,我会非常乐意。谢谢!

c# html asp.net-mvc radio-button model-binding
1个回答
0
投票

如果有人遇到类似的情况,我最终使用具有相同“选择”名称的下拉菜单,它就像我想要的那样工作。谢谢大家的帮助!

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