Asp.net mvc 4 通过复选框在一个控制器中的两个操作之间进行选择

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))

我的控制器中有两个动作,我想通过razor视图中的复选框选择要执行的动作

这是我的控制器:

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()
{

}