C# Html.BeginForm不携带其当前参数
我有一个简单的表单,如下所示:C# Html.BeginForm不携带其当前参数,c#,html,asp.net-mvc,razor,C#,Html,Asp.net Mvc,Razor,我有一个简单的表单,如下所示: @using (Html.BeginForm("search", "home", new { param1 = "value1" }, FormMethod.Get )) { @Html.TextBox("Search", ViewBag.Search as string) <button type="submit">Search </button> } <form action="/home/search?p
@using (Html.BeginForm("search", "home", new { param1 = "value1" }, FormMethod.Get ))
{
@Html.TextBox("Search", ViewBag.Search as string)
<button type="submit">Search </button>
}
<form action="/home/search?param1=value1" method="get">
<input id="Search" name="Search" type="text" value="">
<button type="submit">Search </button>
</form>
public ActionResult Search(string param1, string search)
{
// param1 returns as "null"
// search contains the value that was inside the textbox
}
有人知道我做错了什么吗?塞尔曼22提出了实现这一目标的正确方法。您没有将参数放在实际的URL上,而是将它们放在隐藏的形式中
@using (Html.BeginForm("search", "home", null, FormMethod.Get ))
{
<input type="hidden" name="param1" value="@ViewBag.Param1Value.ToString()" />
@Html.TextBox("Search", ViewBag.Search as string)
<button type="submit">Search </button>
}
@使用(Html.BeginForm(“search”、“home”、null、FormMethod.Get))
{
@TextBox(“搜索”,ViewBag.Search作为字符串)
搜寻
}
谢谢 一些建议
- 将你的表格与帖子一起使用
- 我总是建议使用强类型的视图模型,它有很多好处
public class SearchViewModel {
public string param1 {get;set;}
public string search {get;set;}
}
[HttpPost] // <-- were you missing this before?
public ActionResult Search(SearchViewModel model)
{
// access with model.param1
}
@model SearchViewModel
@using (Html.BeginForm("search", "home", FormMethod.POST ))
{
@Html.HiddenFor(x=>x.param1)
@Html.TextBoxFor(x=>x.search)
<button type="submit">Search </button>
}
公共类SearchViewModel{
公共字符串param1{get;set;}
公共字符串搜索{get;set;}
}
[HttpPost]//x.param1)
@Html.TextBoxFor(x=>x.search)
搜寻
}
您可以为param1
创建一个隐藏字段
,也可以使用helper方法。:)