如何接受要在操作方法中处理的 ID 列表?



我有一个 ASP.NET 的MVC操作方法,它接受单个policyId并对其进行处理,返回JSON结果以指示成功。

public ActionResult MovePolicyToFallout(int policyId)
{
try
{
orchestrator.MovePolicyToFallout(policyId);
return Json(new { Success = true });
}
catch (EntityNotFoundException ex)
{
return HttpNotFound(ex.Message);
}
}

使此代码接受 policyId 列表并处理每个策略 ID 的好模式是什么?

您可以保留您拥有的方法,然后添加一个方法,该方法接受值的集合并循环访问它们,为每个值调用您的方法:

public List<ActionResult> MovePoliciesToFallout(List<int> policyIds)
{
var l = new List<ActionResult>();
foreach (int policyId in policyIds)
{
var result = MovePolicyToFallout(policyId);
l.Add(result);
}
return l;
}

注意:它自然会返回一个结果列表,而不是一个。

我会考虑更改控制流,这样MovePolicyToFallout在找不到策略时不会抛出异常。

例如,在下面,我假设被调用的方法返回一个布尔值,而不是抛出。

然后,您可以投影由策略 ID 键入的整个结果列表:

public ActionResult MovePoliciesToFallout(IEnumerable<int> policyIds)
{
return Json(policyIds.Select(
pId => new 
{
PolicyId = pId,
Success = orchestrator.MovePolicyToFallout(pId)
}));
}

rory.ap帖子的更新,使用List和foreach循环

public List<ActionResult> MovePoliciesToFallout(List<int> policyIds)
{
try
{
foreach (int policyId in policyIds)
{
MovePolicyToFallout(policyId);
}
}
catch(EntityNotFoundException ex)
{
return HttpNotFound(ex.Message);
}
return Json(new { Success = true }); //or return view, redirecttoaction etc
}

最新更新