2012-02-15 70 views
1

我有一个网站,通过数据库搜索和页面结果。我想这样做,只要有新的搜索页面索引默认为1.要做到这一点,我想传递一个标志,当提交按钮被按下,告诉控制器修改页面索引。我认为你可以通过onclick属性传递值,但没有取得任何成功。MVC操作提交按钮按

这是我的代码搜索文本框和提交按钮(没有我失败的尝试使用onclick属性)。

Find: @Html.TextBox("SearchString", ViewBag.CurrentSearch as string) 
<input type = "submit" value = "Search"/ > 
+0

要发送给控制器的哪个值? – ThePaye 2012-02-15 20:34:50

回答

1

这个答案提供给解决您原来的问题,以不需要大规模的重构(见我的建议最后的评论)。所以,使用隐藏的输入这样:

Find: @Html.TextBox("SearchString", ViewBag.CurrentSearch as string) 
<input type="hidden" name="lastSearchValue" ViewBag.LastSearch as string /> 
<input type = "submit" value = "Search"/ > 

那么,当您张贴的形式,检查,看是否lastSearchValueSearchString的价值是相同的,如果这样做你需要做的事情。如果我理解你的推理,那么最后一步就是将ViewBag.LastSearch设置为最后设置的值ViewBag.CurrentSearch

一个更好的解决方案将使用SearchViewModel封装所有这个逻辑的自包含的方式。这给出了在不同关注点之间不存在逻辑分散的好处。

1

你可以使用一个隐藏输入:

Find: @Html.TextBox("SearchString", ViewBag.CurrentSearch as string) 
<input type="hidden" name="resetPageIndex" value="true" /> 
<input type = "submit" value = "Search"/ > 

输入值将与表单提交被发送。您必须相应地更新控制器接受的POST参数。

0

你也可以传递标志作为窗体上的隐藏输入:

@Html.Hidden("FlagValue", Your_Flag_Value); 
Find: @Html.TextBox("SearchString", ViewBag.CurrentSearch as string) 
<input type = "submit" value = "Search"/ >