我正在开发一个C#MVC应用程序。我有一个索引动作,可以兼作GET和POST动作。在视图中,用户可以按项目名称或编号(或任何其他不同的选项)进行搜索。
<tr>
<th>
Find by Name:
</th>
<th>
@Html.TextBox("NameSearchString", ViewBag.CurrentNameFilter as string)
</th>
<th>
<input type="submit" value="Search By Name" name="searchButton" />
</th>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<th>
Find by Project Number:
</th>
<th>
@Html.TextBox("NumberSearchString", ViewBag.CurrentNumberFilter as string)
</th>
<th>
<input type="submit" value="Search By Number" name="searchByNumber" />
</th>
</tr>
是否可以检查&#34; searchButton&#34;的价值?在Controller中通过Request.Form?
在我目前拥有的控制器中:
// GET: PROJECTS
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index(string sortOrder, string currentNameFilter, string currentNumberFilter, string nameSearchString, string numberSearchString, int? page,
string searchButton, bool? activeProjectsOnly = true)
{
当我点击&#34;按姓名搜索&#34;按钮,在控制器中&#34; searchButton&#34; string =&#34;按名称搜索&#34;。这是预期的,但为什么我无法使用以下方式检查它:
this.HttpContext.Request.Form["searchButton"]
这是MVC级别:
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" />
<bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
</dependentAssembly>
非常感谢任何帮助。
答案 0 :(得分:1)
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index(string sortOrder, string currentNameFilter, string currentNumberFilter, string nameSearchString, string numberSearchString, int? page,
string searchButton, string searchByNumber, bool? activeProjectsOnly = true)
{
将searchByNumber添加到控制器参数。
控制器参数在回发时查看“name”标记以及Request.Form。因此,要获取按钮的值,您必须引用它的名称。
如果您的表单有多个按钮,我建议使用JQuery或JavaScript根据点击的按钮设置隐藏字段的值并将其传递给控制器。