c# - MVVC - 使用 ViewBag 和控件传递参数的问题
问题描述
我已经被其他人完成了一个 MVVC 项目,但存在一些问题(该项目,而不是某人:D)。我以前对此一无所知,所以我搜索了教程和问题,但我无处可去。因此,如果有任何相关的帖子我没有找到,请随时将我重定向到那里。
控制器有一个方法,它返回一个 ReportClienti 类型的 IQueryable。这是签名
public ActionResult ReportClienti(DateTime? date
, string sortOrder
, int? currentClienteID
, string currentDescrizione
, int? clienteIDsearch
, string descrizioneSearch
, int? page)
如果我理解正确,如果页面中有任何 id 与参数相同的控件,它们应该自动传递。
我认为这一行会在页面打开后立即加载列表:
@Html.PagedListPager(Model, page => Url.Action("ReportClienti",
new { @page, @sortOrder = @ViewBag.CurrentSort, @currentClienteID = ViewBag.CurrentClienteID, @currentDescrizione = ViewBag.CurrentDescrizione }))
显然,这个调用的所有参数都等于 null。
到目前为止,一切都很好。
页面的第一部分有以下代码:
@using (Html.BeginForm("ReportClienti", "LavoratoreRapportini", FormMethod.Get, new { @class = "form-inline" }))
{
<div class="form-group">
<input type="button"
class="btn btn-info"
style="min-width:80px; padding:4px;"
value=@ViewBag.Data.AddMonths(-1).ToString("MMMM")
onclick="location.href='@Url.Action("ReportClienti", "LavoratoreRapportini", @ViewBag.Data.AddMonths(-1))'" />
基本上,它是一个按钮,用于在当前选择之前选择一个月并执行 ReportClienti 方法来加载列表。我假设@ViewBag.Data.AddMonths(-1) 自动作为第一个参数传递(调试我确认“日期”具有正确的值)。我试图将参数的名称从“date”更改为“testDate”,但在这种情况下,该方法将所有参数都接收为 null。这怎么可能?我不明白如何以这种方式绑定名称。
在较低的部分,我得到:
@using (Html.BeginForm("ReportClienti", "LavoratoreRapportini", FormMethod.Get, new { @class = "form-inline" })) {
@Html.DropDownList("clienteIDsearch", (SelectList)ViewBag.FKclienteID, "", htmlAttributes: new { @class = "form-control" })
@Html.TextBox("descrizioneSearch", @ViewBag.CurrentDescrizione as string, new { @class = "form-control frmFilter" })
<button type="submit"
class="btn btn-primary"
@*onclick="location.href='@Url.Action(" ReportClienti", "LavoratoreRapportini" , @ViewBag.Data)'"*@
onclick="location.href='@Url.Action(" ReportClienti", "LavoratoreRapportini" )'">
Search
</button>
这总是传递参数 clienteIDSearch 和 descrizioneSearch 的值,但是我无法传递日期的值。基本上,它按日期或按下拉列表和文本框过滤,从不按两者过滤。我什至尝试将 viewbag 中的日期值设置为隐藏字段,但我仍然无法将值传递给日期(如果我添加一个新参数,将其设置为字符串,我可以传递它,但是作为日期时间?它始终为空)。
解决方案
推荐阅读
- css - Xamarin 使用垂直集合视图形成 x 轴溢出
- javascript - 当 JS 移动到外部文件时,我的任何控件使用的 JS 函数都无法正常工作
- javascript - 为什么 window.onpopstate 使用 history.go 被调用两次?
- javascript - 如何删除字符串中的所有数字和所有标点符号?
- python - 在 Window 的 Linux 子系统中运行 python 时出现内存错误
- agents-jade - 使用主类初始化的两个代理之间的通信
- php - 如何通过 CodeIgniter 和 Ajax 将 MySQL 表数据提取到数据表中不起作用
- jenkins - 'sh: sh: command not found' 在多分支管道中使用 withCredentials 块时
- javascript - webdriverio 5 用于单元测试和功能测试
- android - 错误选项“--entry-file”丢失。使用 --verbose 标志运行 CLI 以获取更多详细信息