C# 传递空模型值后,如何正确删除或修复它?
提交按钮时的样本输出 我不知道为什么我有空值,这是我的示例表单。其中的细节来自局部视图 部分视图代码C# 传递空模型值后,如何正确删除或修复它?,c#,asp.net-core,.net-core,asp.net-core-mvc,C#,Asp.net Core,.net Core,Asp.net Core Mvc,提交按钮时的样本输出 我不知道为什么我有空值,这是我的示例表单。其中的细节来自局部视图 部分视图代码 @model SimplyAccounting.Models.TransactionViewModels.JournalDetailsViewModel @using (Html.BeginCollectionItem("JournalDetailsViewModel")) { <tr class="checkD
@model SimplyAccounting.Models.TransactionViewModels.JournalDetailsViewModel
@using (Html.BeginCollectionItem("JournalDetailsViewModel"))
{
<tr class="checkDetails" id="@Model.Guid">
<td>
//code here
<td>
<tr class="DocumentDetails" id="@Model.Guid">
<div class="btn-group btn-group-toggle">
<button type="button" class="btn btn-sm btn-info btnModal" guid="@Model.Guid"><i class="far fa-file"></i></button>
<button type="button" class="btn btn-sm btn-danger" id="delete" name="delete" value="delete" onclick="javascript: deleteBook(document.getElementById('@Model.Guid'))"><i class="far fa-trash-alt"></i></button>
</div>
</td>
</tr>
}
控制器:
public IActionResult CreateJournalDetails(JournalDetailsViewModel vmodel)
{
vmodel = new JournalDetailsViewModel();
vmodel.Gla_List = GlaList();
vmodel.Function_List = FunctionList();
vmodel.Expense_List = ExpenseList();
vmodel.Bank_List = BankList();
vmodel.Location_List = LocationList();
vmodel.Branch_List = BranchList();
vmodel.Asset_List = AssetList();
vmodel.Item_List = ItemList();
return PartialView("_JournalDetails", vmodel);
}
现在,当您是服务器端的时候,您可以从视图模型中将空项删除到新列表中,并将新列表添加到您的上下文中 你应该总是假设文章中的数据可能是错误的/被操纵的,你应该尽可能地验证你在文章中得到的数据。因此,即使您在前端修复了它,您也应该确保返回的数据是有效的 也就是说,这应该可以解决您的问题
var newViewModel = new List<JournalDetails>();
foreach (var item in newViewModel.JournalDetailsViewModel)
{
if (item != null)
{
...
newViewModel.Add(item);
}
}
var dtails = _mapper.Map<List<JournalDetails>>(newViewModel.JournalDetailsViewModel);
_context.AddRange(newViewModel);
...
var newViewModel=newlist();
foreach(newViewModel.JournalDetailsViewModel中的变量项)
{
如果(项!=null)
{
...
newViewModel.Add(项);
}
}
var dtails=_mapper.Map(newViewModel.JournalDetailsViewModel);
_AddRange(newViewModel);
...
现在,当您在服务器端时,您可以将视图模型中的空项删除到新列表中,并将新列表添加到上下文中
你应该总是假设文章中的数据可能是错误的/被操纵的,你应该尽可能地验证你在文章中得到的数据。因此,即使您在前端修复了它,您也应该确保返回的数据是有效的
也就是说,这应该可以解决您的问题
var newViewModel = new List<JournalDetails>();
foreach (var item in newViewModel.JournalDetailsViewModel)
{
if (item != null)
{
...
newViewModel.Add(item);
}
}
var dtails = _mapper.Map<List<JournalDetails>>(newViewModel.JournalDetailsViewModel);
_context.AddRange(newViewModel);
...
var newViewModel=newlist();
foreach(newViewModel.JournalDetailsViewModel中的变量项)
{
如果(项!=null)
{
...
newViewModel.Add(项);
}
}
var dtails=_mapper.Map(newViewModel.JournalDetailsViewModel);
_AddRange(newViewModel);
...
这是因为您要映射到一个包含空值的列表吗?检查空值会遇到麻烦,但不使用该对象映射到空值,因为映射到的列表中包含空值?你会很麻烦地检查空值,但不使用该对象进行映射感谢这解决了问题,但我也想知道如何修复客户端当我修复此类问题时,我使用Fiddler并查看从浏览器发布的实际值,通常会有一些您忘记删除的剩余内容客户端。您可以查看此问题中的答案,以帮助您为asp.net设置Fiddler。谢谢这解决了问题,但我也想知道如何修复客户端当我修复此类问题时,我使用Fiddler并查看从浏览器发布的实际值,通常会有一些您已经忘记的剩余内容在客户端删除。您可以查看此问题的答案,以帮助您为asp.net设置Fiddler
var newViewModel = new List<JournalDetails>();
foreach (var item in newViewModel.JournalDetailsViewModel)
{
if (item != null)
{
...
newViewModel.Add(item);
}
}
var dtails = _mapper.Map<List<JournalDetails>>(newViewModel.JournalDetailsViewModel);
_context.AddRange(newViewModel);
...