FormCollection在mvc中返回null值

时间:2015-02-07 18:25:37

标签: c# asp.net-mvc formcollection

[HttpGet]
    public ActionResult Index()
    {

        return View();
    }

    [HttpPost]
    public ActionResult Index(FormCollection fc)
    {
        String sc = fc["SearchString"]; 
        return RedirectToAction("SearchFromObject", new { id = sc });
    }

    public ActionResult SearchFromObject(string searchString)
    {
        var Items = from m in db.Objects
                    select m;
        if (!String.IsNullOrEmpty(searchString))
        {
            Items = Items.Where(s => s.Name.Contains(searchString));
        }
        return View(Items);
    }

此代码为String sc返回null值。为什么??在我看来有一个文本框。我希望将该值传递给SearchFromObject方法作为参数,当单击按钮并检索与搜索关键字相关的数据时。这是我的观点

@{
ViewBag.Title = "Search";
}

<h2>Search</h2>
<p>

@using (Html.BeginForm())
{<p>
    Title: @Html.TextBox("SearchString") <br />
    <input type ="submit" value="Search" />
</p>
}

2 个答案:

答案 0 :(得分:0)

指定您的发布方法,控制器名称和表单操作,如下所示:

@using (Html.BeginForm("Index", "Default1", FormMethod.Post))
{    
  <p>
  Title: @Html.TextBox("SearchString") <br />
  <input type ="submit" value="Search" />
</p>
}

答案 1 :(得分:0)

你的方法

public ActionResult SearchFromObject(string searchString)

有一个名为searchString的参数,但在Index() POST方法中,您尝试使用id传递名为new { id = sc }的参数。它不是sc的{​​{1}}的值,它是null的第二个GET方法中searchString的值!

将POST方法签名更改为

null