【发布时间】:2012-01-03 16:12:35
【问题描述】:
我的 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")%>
<%} %>
这里是“SearchBorrowed”操作:
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”复选框时, 它返回结果,网址如下:
.../SearchBorrowed?searchterm=&IsReturned=false
但是当我选中 IsReturned' 复选框时,网址是这样的:
.../SearchBorrowed?searchterm=s&IsReturned=true&IsReturned=false
为什么上面的 url 中有两个 IsReturned ?!
我该如何解决这个问题?
【问题讨论】:
-
我建议使用强类型模型。
-
这是一个视图内的搜索表单,它把它模型化为 'IEnumerable
' 所以我不能将复选框绑定到模型。如果我想这样做,我必须使用 ViewModel,对吗?
标签: c# asp.net-mvc-3 query-string