通过复选框在一个控制器中选择2个操作,单个视图

时间:2014-07-21 12:25:47

标签: asp.net-mvc-4 razor

我的控制器中有2个动作,我想在我的剃刀视图中通过复选框选择要执行的动作,

这是我的控制器:

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>

2 个答案:

答案 0 :(得分:1)

发布到单个操作方法,然后根据复选框的值调用一个现有方法。

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
}

答案 1 :(得分:0)

我只是纠正你的HTML

您的html包含两个表单标记。我不确定表单标签中表单的用法。在执行时,html.beginform将在内部创建另一个表单标记。所以更好的一个表单标记将包含所有要发布的元素。

 @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>
        }

    }
控制器中的

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

}