FormCollection returns mvc 中的空值

FormCollection returns a null value in mvc

[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);
    }

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

@{
ViewBag.Title = "Search";
}

<h2>Search</h2>
<p>

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

像这样指定您的 post 方法、控制器名称和表单操作:

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

你的方法

public ActionResult SearchFromObject(string searchString)

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

将 POST 方法签名更改为

[HttpPost] public ActionResult Index(string SearchString)
{
  return RedirectToAction("SearchFromObject", new { searchString = SearchString});
}