在我的 ASP.NET Core MVC 项目中,有一个包含两列的表,其中包含下拉列表,用户应该在其中选择费率值,然后单击“保存”以更新表中每一行的值。总共有几十个动态生成的行,这导致需要跟踪的值的下拉列表数量是原来的两倍。
同样,目标是使用该行的两个下拉列表中选择的值来更新每一行。
我能够创建表格并显示值。有一个循环生成表中的每一行。我遇到的问题是不知道如何将所有下拉列表中的所有值与行号一起传递回控制器,以便我可以编写逻辑来更新数据库中的值。我可以从第一行传递一个下拉组合,但我不知道如何对所有这些组合执行相同的操作或指示它们来自哪一行。事实上,下拉列表是循环的,这使得这变得很困难。
这是我显示表格的视图部分:
<tbody>
@foreach (var item in Model.WorksheetRates)
{
var recordNumber = PagedContext.Page * PagedContext.PageSize + Model.WorksheetRates.IndexOf(item) + 1;
<tr>
<td>@recordNumber</td>
<td>
@item.Program
</td>
<td>
@item.Area
</td>
<td>
@Html.DropDownListFor(x => x.GARateID, gaRatesList, new { @style = "width:280px;" })
</td>
<td>
@Html.DropDownListFor(x => x.OverheadRateID, overheadRatesList, new { @style = "width:280px;" })
</td>
</tr>
}
</tbody>
Run Code Online (Sandbox Code Playgroud)
这是模型:
public class BudgetPrepViewModel
{
public List<WorksheetRate> WorksheetRates { get; set; }
public int GARateID { get; set; }
public …Run Code Online (Sandbox Code Playgroud) 我会尽量让我的问题听起来不那么混乱.我提前为任何措辞错误道歉,因为我试图尽我所能地说出我的问题:
使用T-SQL我需要编写一个join语句来获取表A和表B中匹配的所有结果
和(!)
另一个连接语句(或第一个连接的延续)返回表A中DID在表B中没有匹配的所有结果,但是在第二个结果集中,我需要将其中一个列设置为"N/A" "识别没有匹配的记录.
换句话说,我需要能够返回表A中所有内容的东西,但也会识别B中未匹配的行.然后在报告中使用该信息.
这是我到目前为止:
我完成了第一部分:
LEFT OUTER JOIN dbo.chart B
ON B.UserName = A.user_name
Run Code Online (Sandbox Code Playgroud)
这让我得到匹配的记录和匹配的记录
我尝试添加第二个连接:
JOIN dbo.chart
ON NOT EXISTS (select * from B.UserName = A.user_name)
Run Code Online (Sandbox Code Playgroud)
希望它能得到不匹配的记录(我计划在感兴趣的列上使用REPLACE标记该列"N/A")但是我的synthax有明显的错误,因为它会产生异常.
我的问题是我需要改变什么来获得你需要的结果.我知道我需要至少有一个连接,因为我有其他部分的查询可以使用.我只是不知道我是否需要有一个连接返回两组数据我实际上确实需要第二个只是为了不匹配的记录.
希望这不是太混乱.任何帮助将不胜感激.
谢谢!
更新:我只想强调,我考虑使用第二个连接而不是一次获得所有结果的原因是因为我需要正确识别和标记那些在我得到的所有内容中不匹配的行.