我目前正在编写一个程序,用于比较基于主键的多个数据库中的数据(我使用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" value=@Model.Columns[y]>
<text>@Model.DBNames[0]:   </text><input type="radio" name="Records" value="@Model.ContextTables[0][y]" checked="checked"> @Model.ContextTables[0][y] <br />
}
<text>@Model.DBNames[x]:   </text><input type="radio" name="Records" value="@Model.ContextTables[x][y]" > @Model.ContextTables[x][y] <br />
}
}
}
基本上它是如何工作的,如果有2个(或更多)列不匹配,它会创建更多的单选按钮组。
例如,假设我们有主键“Stack Overflow”,在2个数据库之间,变量“C#”和“HTML”是不同的。我的网页看起来或多或少像这样:
PRIMARY KEY:Stack Overflow
差异:
C#
t1-“值1” t2-“值2”
HTML
t1-“值1” t2-“值2”
使用单选按钮,其中 - 字符位于值的旁边。当只有一个不匹配的列时,这种方法有效,但是当有2个或更多时,我只能从所有列表中选择1个单选按钮(这不是预期的,但我知道这是因为所有的“名称”我的单选按钮是一样的。)
预期的性能是每个列都有自己独立的单选按钮集,但是它们大多数都被POST为与创建列表相同的名称(如上所述)。这是因为Action方法不能作为列表而采用无限变化的输入。
例如,如果我选择了C#,value1和HTML,则value1的目标结果是映射到名为“Records”的表单数据,以便Records [0]从C#列输出value1并记录[1] ]在控制器中使用时,将从HTML列输出value1。
我基本上要求的是帮助/修复,无论是使用C#,Javascript,J-Query还是在HTML本身(PHP都不可能),来解决这个问题。
我意识到这可能看起来散乱而且凌乱,但我已经在整个项目上工作了大约一个半星期,我的大脑已经完全被炸掉了。如果我能做些什么来提供额外的清晰度,我会非常乐意。谢谢!
答案 0 :(得分:0)
如果有人遇到类似情况,我最终会使用相同的下拉菜单&#34;选择&#34;名称,它的工作原理与我的意图相同。谢谢大家的帮助!