在asp.net mvc中通过查询字符串进行搜索
本文关键字:字符串 查询 搜索 asp net mvc | 更新日期: 2023-09-27 18:19:15
我有一个窗体在我的asp.net mvc视图如下:
<%using (Html.BeginForm("SearchBorrowed", "Admin", FormMethod.Get))
{ %>
<%: Html.TextBox("searchTerm", Request.QueryString["searchterm"])%>
<input type="submit" value="Search" />
<br />
Is Returned :
<%:Html.CheckBox("IsReturned")%>
<%} %>
下面是' searchborrow '操作:
public ActionResult SearchBorrowed(bool IsReturned=false, string searchTerm = null)
{
IEnumerable<BorrwoinfInfo> bs;
//...Get from repository
return View(bs.ToList());
}
和最后的路由设置:
routes.MapRoute(
"SearchBorrowed", // Route name
"{controller}/{action}/{*searchTerm}", // URL with parameters
new
{
controller = "Admin",
action = "SearchBorrowed",
searchTerm = UrlParameter.Optional
} // Parameter defaults
当我提交表单时没有勾选'IsReturned'复选框,它返回结果,url如下所示:
…/SearchBorrowed ? searchterm =, IsReturned = false
但是当我选中IsReturned复选框时,url会变成这样:
…/SearchBorrowed ? searchterm = s& IsReturned = true& IsReturned = false
为什么上面的url中有两个isreturn ?
为什么上面的url中有两个isreturn ?
因为Html.CheckBox
helper生成了一个与复选框同名的附加隐藏输入字段。如果查看生成的HTML,您将看到helper生成了以下2个输入字段:
<input type="checkbox" name="IsReturned" id="IsReturned" value="true" checked="checked" />
<input type="hidden" name="IsReturned" id="IsReturned" value="false" />
这是设计的。此帮助器旨在绑定到视图模型上的布尔属性。当一个复选框字段未被选中时,没有值被发送到服务器,所以如果没有隐藏字段,您将无法将其绑定到布尔字段。
如果您不想要这个隐藏字段,您可以编写一个自定义帮助器或手动生成复选框字段。