【问题标题】:How to access current input in Razor form so I can add it to a query?如何以 Razor 形式访问当前输入,以便将其添加到查询中?
【发布时间】:2017-10-27 01:19:37
【问题描述】:

我有一个表,它有可排序的标题、分页(使用PagedList)和带有提交按钮的过滤器(使用HtmlForm Get)。使用任何过滤器,或单击标题或页码应该查询获取并使用相同的查询字符串更新表。但是,我有一个问题:

标题和页面是操作链接,过滤器本身是使用@Html.TextBoxDropDownList 等创建的...并有一个提交按钮

在我的ActionLink 中,我需要能够传递所有参数,包括当前在过滤器表单中的值:

@Html.ActionLink("< Prev", "Index",
                 new {Value1 = (Value in TextBox),
                      Value2 = ViewBag.Something,
                      Value3 = ect...})

并且,还有一个过滤器的提交按钮,如果按下该按钮,我需要能够从我的 Viewbag 中将附加信息添加到查询字符串中,该查询字符串包含排序标题值并需要从带有页码的模型。

还有什么可以做我想做的事吗?

(我曾考虑将提交按钮从输入变为操作链接,但我仍然不知道如何从Html.TextBox 等中获取当前值)...

编辑

我创建了一个新的过滤器对象,现在我将其作为参数发送到我的控制器。但是,我有一些用于表格标题和页面的操作链接。我不知道如何在单击过滤器对象时更改它们,而无需为控制器中的每个标题和页面按钮创建操作。这甚至是个坏主意吗?例如:

ActionResult NextPage(Filter filter);...
ActionResult Header1(Filter filter);...
...

如果我不这样做...我不知道如何知道用户单击了哪个操作链接...而且我不能使用 routedatadictionary 因为我只能发送我的过滤器对象,或者一堆参数不是两者都...

另一个想法是发送所有过滤器模型的属性,加上字符串查询中的链接名称,然后在控制器中重建过滤器...

【问题讨论】:

  • 你在视图中使用什么模型?
  • Atm,模型只保存填充表格的值。并且不包含任何过滤器、排序或任何其他数据,尽管我可以修改它来执行此操作。如果我将它添加到模型中......我需要能够使用操作链接传递模型,我认为这是不可能的,还是我错了?
  • 通过模型并非不可能,您可以包含其他字段,尽管我认为应该分开关注点。您可以制作一种接受数据模型作为参数的网格模型。我同意 Brent Echols 的观点,其中包含用于排序和页码的隐藏输入字段。

标签: asp.net asp.net-mvc-3 razor


【解决方案1】:

您可以尝试使用模型!所以在Action“Index”中,使其参数接受SomeModel模型。只需将所有输入绑定到它,它就会自动提交。为了保持 ViewBag 的持久化,你有一个正确的想法,你只需说 new { Value1 = ViewBag.Something }。如果你真的想让它更加 MVC-ish,只需在模型中为 viewbag 保存的任何内容创建一个字段,然后渲染一个 Html.HiddenFor(m => m.SomeField)。希望这会有所帮助!

[HttpPost]
public ActionResult Index(SomeModel model, SomeValue value, ...)
{
     //Do whatever filtering you have to do, or redirects, or w/e it is you want

     return View(model);
}

【讨论】:

  • 我明白了,但是当用户按下操作链接时,对于可排序的标题或页码,我需要它提交模型,我可以将我的模型作为参数传递吗? @Html.ActionLink("
  • 哦,我知道发生了什么...我想我一开始有点误解...所有的 ActionLinks 都转到“索引”吗?如果是这样,只需使用表单并提交按钮。我有 70% 的把握,尽管您可以像在评论中那样通过模型
  • 嗯,我有一个大问题,那就是你只能传递模型,或者传递参数,不能同时传递。但是,我需要根据单击的操作链接更改模型。 =(,有没有一种方法可以根据特定的操作链接更改模型?(我能看到这样做的唯一方法是在我的控制器中为表的每个标题设置一个特殊操作:Column1(Object object).. . Column2...等...然后我可以让它排序正确的...但是那是很多重复而且不是很动态
猜你喜欢
  • 1970-01-01
  • 2011-01-21
  • 1970-01-01
  • 2021-08-30
  • 1970-01-01
  • 1970-01-01
  • 2021-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多