我必须将隐藏的字段值传递给控制器操作.所以我尝试了以下方式,但我得到了空值.
我尝试了两种方法,即formcollection和viewmodel概念
调节器
public ActionResult MapIcon()
{
Hidden hd = new Hidden();
return View(hd);
}
[HttpPost]
public ActionResult MapIcon(Hidden hidden)
{
var value=hidden.hiddevalue;//null
FormCollection col = new FormCollection();
var value = col["hidden1"];
// string value = mycontroler.ControlName;
return View(hidden);
}
Run Code Online (Sandbox Code Playgroud)
视图
@model SVGImageUpload.Models.Hidden
Razor view:@using (Html.BeginForm(new { id = "postform" }))
{
<input type="hidden" id="" value="7" name="hidden1" />
<input type="hidden" id="" value="7" name="hidden2"/>
<input type="submit" value="Match"/>
}
Run Code Online (Sandbox Code Playgroud)
视图模型
public class Hidden
{
public string hiddevalue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
小智 10
在我看来,你正试图在POST控制器中获得多个值.在这种情况下,通过您的考试,隐藏输入的值就足够了.在这种情况下,您可以将控制器设置为:
public ActionResult Index()
{
Hidden hd = new Hidden();
return View(hd);
}
[HttpPost]
public ActionResult Index(IEnumerable<string> hiddens)
{
foreach (var item in hiddens)
{
//do whatter with item
}
return View(new Hidden());
}
Run Code Online (Sandbox Code Playgroud)
至于你的观点,简单地改变它以便绑定到相同的名称"hiddens"如下:
@using (Html.BeginForm(new { id = "postform" }))
{
<input type="hidden" value="7" name="hiddens" />
<input type="hidden" value="2" name="hiddens" />
<input type="submit" value="Match" />
}
Run Code Online (Sandbox Code Playgroud)
希望这能满足您的期望.
试试这个,在Razor视图中:
@using (Html.BeginForm(new { id = "postform" }))
{
@Html.HiddenFor(m=>m.hiddevalue)
<input type="submit" value="Match"/>
}
Run Code Online (Sandbox Code Playgroud)