如何解决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",@ViewBag.Data.AddMonths(-1))'" />
基本上它是一个按钮,用于在当前选择之前选择一个月并执行方法 ReportClienti 以加载列表。 我假设 @ViewBag.Data.AddMonths(-1) 自动作为第一个参数传递(调试我确认“日期”具有正确的值)。 我试图将参数的名称从“date”更改为“testDate”,但在这种情况下,该方法将所有参数接收为 null。 这怎么可能?我不明白如何以这种方式绑定名称。
在较低的部分我得到:
@using (Html.BeginForm("ReportClienti",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",@ViewBag.Data)'"*@
onclick="location.href='@Url.Action(" ReportClienti","LavoratoreRapportini" )'">
Search
</button>
这始终传递参数 clienteIDSearch 和 descrizionesearch 的值,但我无法传递日期的值。 基本上它按日期或按下拉列表和文本框过滤,从不同时过滤。 我什至尝试将视图包中的日期值设置为隐藏字段,但仍然无法将该值传递给日期(如果我添加一个新参数,将其设置为字符串,我可以传递它,但是作为日期时间?它总是空的)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。