Asp.net mvc 4 通过复选框在一个控制器中的两个操作之间进行选择
我的控制器中有两个动作,我想通过razor视图中的复选框选择要执行的动作 这是我的控制器:Asp.net mvc 4 通过复选框在一个控制器中的两个操作之间进行选择,asp.net-mvc-4,razor,Asp.net Mvc 4,Razor,我的控制器中有两个动作,我想通过razor视图中的复选框选择要执行的动作 这是我的控制器: public ActionResult Person(string searchString) { var person = from p in db.Persons select p; if (!String.IsNullOrEmpty(searchString))
public ActionResult Person(string searchString)
{
var person = from p in db.Persons
select p;
if (!String.IsNullOrEmpty(searchString))
{
person = person.Where(oo => oo.Name.ToUpper() == searchString);
}
return View(person);
}
public ActionResult Job(string jobString)
{
var jobs = from j in db.Jobs
select j;
if (!String.IsNullOrEmpty(jobString))
{
jobs = jobs.Where(oo => oo.Name.ToUpper() == jobString);
}
return View(jobs);
}
当我检查一个案例时,我想对这个特定案例执行查询搜索
以下是我的看法:
<div>
<form method="POST">
<div>
<input type="checkbox" name="Person" value="Person" style="margin-left: 54px"/>Person
</div>
<div class="Job">
<input type="checkbox" name="Job" value="Job" />Job
</div>
@using (Html.BeginForm())
{
<p>
<input type="text" name="SearchString" style="margin-left: 90px;" />
<input type="submit" value="Search" />
</p>
}
</form>
人
工作
@使用(Html.BeginForm())
{
}
发布到单个操作方法,然后根据复选框的值调用现有方法之一
public ActionResult Search(bool isJobSearch, string searchString)
{
if (isJobSearch)
{
return Job(searchString);
}
else
{
return Person(searchString);
}
}
private ActionResult Person(string searchString)
{
// As your example
}
private ActionResult Job(string jobString)
{
// As your example
}
我只是在修改你的html html包含两个表单标记。我不确定是否使用带有表单内标记的表单。在执行时,html.beginform将在内部创建另一个表单标记。因此,一个表单标记最好包含生成post的所有元素
@using (Html.BeginForm("Search","Home"))
{
<div>
<input type="checkbox" name="Person" value="Person" style="margin-left: 54px"/>Person
</div>
<div class="Job">
<input type="checkbox" name="Job" value="Job" />Job
</div>
<p>
<input type="text" name="SearchString" style="margin-left: 90px;" />
<input type="submit" value="Search" />
</p>
}
}
为什么要添加两种形式?当执行者使用嵌套表单时,html.beginform将在内部创建表单标记,这是错误的。实际上,他正在创建两个表单。他的html是否正确?请您选中复选框,而不是在搜索栏中输入作业,以将我重定向到操作我想使用复选框执行此操作,当我选择作业时,它会将我重定向到操作作业。所以我可以从搜索栏中搜索数据库中的作业,对Person也是一样
public ActionResult Search(FormCollection form)
{
//do some condition based on your needs
if(form["SearchString"]=="Job")
return RedirectToAction("Job");
else
return RedirectToAction("Person");
}
public ActionResult Person()
{
}
public ActionResult Job()
{
}