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