gpt4 book ai didi

c# - 有效地将大量参数传递给 ASP.NET MVC Controller Action

转载 作者:太空宇宙 更新时间:2023-11-03 22:39:59 28 4
gpt4 key购买 nike

我正在尝试确定一种更有效的方法来将大量参数传递给我的 Controller 操作。我试图查看类似的问题,但它们似乎没有提供任何超出我已经实现的内容的真正解释。

例如,我有一个简单的生成的 CRUD 程序,它实现了 PagedList 包。这个 CRUD 程序需要有多个过滤器(10+)。以前,我一直通过 URL 传递参数。

简单的例子:

// GET: Action/rows
[HttpGet]
public async Task<ActionResult> Index(int? page, string currentrowId, string rowId)
{
if (rowId != null)
{
page = 1;
}
else
{
rowId = currentRowId;
}
var data = from s in db.tblrows
where s.rowId.ToString().Contains(rowId)
select s;

int pageSize = 10;
int pageNumber = (page ?? 1);

ViewBag.Page = page;
ViewBag.currentrowId = rowId;

return View(await data.ToPagedListAsync(pageNumber, pageSize));
}

然后,在我看来,我通过在每个 CRUD View 中通过 URL 传递参数来维护我的参数。例如,在我的索引 View 中,我可以使用以下命令在编辑 View 中打开一个项目:

@Html.ActionLink("Edit", "Edit", new { id = item.rowId, page = ViewBag.Page, currentrowId = ViewBag.currentrowId }, new { @class = "btn btn-success btn-sm" })

在编辑 View 中,我有类似的代码维护当前参数,以便当用户返回 CRUD 界面时,他们的参数是完整的。

这种方式对于一些参数来说效果很好,但对于很多参数来说似乎非常乏味。我考虑过为我的搜索参数创建一个模型并将其作为我的 ViewModel 的一部分传递,但是在考虑需要什么时,这似乎也不是很有效。

任何有关更好方法的文档或建议将不胜感激。

编辑:由于这是 MVC,并且我使用的是 GET 操作方法,因此我无法将对象传递给该方法。

最佳答案

您可以使用 HttpGet 将对象传递给 MVC 操作......这是我们解决方案中的实时代码示例......我更改了对象并删除了我们的实现,但这绝对是可能的。 [FromUri] 告诉模型绑定(bind)器在 get 请求中处理复杂对象。

        [HttpGet]
[Route("orderitems")]
public DataResponse<List<ItemDTO>> GetItems([FromUri]SearchObject search)
{
// Do stuff
}

关于c# - 有效地将大量参数传递给 ASP.NET MVC Controller Action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52780738/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com