ASP.NET MVC 5 - ajax.beginform()与空参数
我正在处理web应用程序项目,我试图包括使用ajax搜索。ASP.NET MVC 5 - ajax.beginform()与空参数
我使用ajax.beginform()创建了一个搜索表单,并且我有一个小问题: 当我的文本框为空,并且单击搜索时,我希望视图返回所有实体(例如不发生搜索) ,但它返回空视图。 我试图检查控制器,如果字符串为空,但没有成功。
1.当文本字段为空时参数获得什么值?
2.如何发送几个参数?
预先感谢您!
特拉维夫
.cshtml - 查看
@using (Ajax.BeginForm("BranchSearch", "Branches",
new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "searchResults" }))
{
<h3>Search:</h3>
<p>Branch name :</p>@Html.TextBox("Search", null, new { id = branchname"})
<input type="submit" value="Search" class="btn btn-primary" />
}
的.cs - 控制器
public PartialViewResult BranchSearch(String branchname, String country)
{
List<Branches> model = (from p in db.Branches
select p).ToList();
if(branchname!=null)
{
model = model.Where(x => x.BranchName.Equals(branchname)).ToList();
}
return PartialView("BranchSearch",model);
}
当用户不输入搜索框中输入任何内容,并提交表单,该脚本将发送一个空字符串。所以你应该检查空字符串或空字符串。
if (!string.IsNullOrEmpty(branchname))
{
model = model.Where(x => x.Branchname.Equals(branchname)).ToList();
}
而且动作方法的参数名称应与你的输入元素名称。
@Html.TextBox("branchname")
而且,你不需要你Where
条款之前调用ToList()
。你可以在最后调用它,那时LINQ查询表达式将被评估,并且会给你筛选结果。如果要使用不区分大小写的搜索,请使用Equals
方法过载中的一个不区分大小写的StringComparison
枚举值。
public PartialViewResult BranchSearch(String branchname, String country)
{
IQueryable<Branch> model = db.Branches;
if (!string.IsNullOrEmpty(branchname))
{
model = model.Where(x => x.BranchName.Equals(branchname
,StringComparison.OrdinalIgnoreCase));
}
// Now we are ready to query the db and get results. Call ToList()
var result = model.ToList();
return PartialView("BranchSearch", result);
}
如果要执行多个过滤器,添加一个Where子句在model
你打电话ToList()
(同我们所做的分支名称)之前
非常感谢!它的工作:) –
** @ Html.TextBoxFor(m => m.BranchName,new {@class =“form-control”})**会更受欢迎,因为它会创建一个名称和ID为Branchname并且在提交之前也会触发任何相关验证 –
哪里是从哪里来的“国家”参数... ?? –