为什么查询字符串参数被包含两次- asp.net布尔
本文关键字:asp net 布尔 包含两 查询 字符串 参数 为什么 | 更新日期: 2023-09-27 17:49:33
我有我的索引页与以下代码:
<div class="editor-field">
@Html.CheckBoxFor(model => model.IncludeArchive)
@Html.ValidationMessageFor(model => model.IncludeArchive)
</div>
我的模型是:
public class SearchModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string TestNumber { get; set; }
public bool IncludeArchive { get; set; }
}
[Authorize]
public ActionResult Index(SearchModel search)
{
var test= db.Test.AsQueryable();
if (Request.QueryString.Count > 0) {
if (!search.IncludeArchive) test = test.Where(x => x.Status == "Active");
} else {
test= test.Where(x => x.Status == "Active");
}
ViewBag.testList = test.ToList();
当浏览到页面,然后选择IncludeArchive复选框使其为true时,查询字符串变为
http://localhost:64005/test/?FirstName=&LastName=&TestNumber=&IncludeArchive=true&IncludeArchive=false
为什么在查询字符串中包含变量IncludeArchive两次?
谢谢
这是MVC使用复选框的方式。如果浏览页面的HTML,您会注意到,对于使用HTML helper呈现的每个复选框,都有一个带假值的隐藏字段。这样可以确保在用户没有选择复选框的情况下发送false值。这就是为什么选中复选框时有两个值,不选中复选框时只有一个值。要了解更多细节,你也可以查看这篇文章:asp.net mvc:为什么是Html。复选框,生成一个额外的隐藏输入为什么CheckBoxFor呈现一个额外的输入标签,以及我如何使用FormCollection获得值?
希望能有所帮助。