如何在asp.net mvc 3中使用从视图到控制器的隐藏字段值

时间:2013-08-08 07:48:36

标签: asp.net-mvc-3

我必须将隐藏的字段值传递给控制器​​操作。所以我尝试了以下方式,但我得到的是空值。

我尝试了两种方法,即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);
}

查看

@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"/>
}

视图模型

public class Hidden
{
  public string hiddevalue { get; set; }
}

3 个答案:

答案 0 :(得分: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());
}

至于你的观点,简单地改变它以便绑定到同一个名字“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" />
}

希望这能满足您的期望。

答案 1 :(得分:9)

试试这个,在Razor视图中:

@using (Html.BeginForm(new { id = "postform" }))
{
      @Html.HiddenFor(m=>m.hiddevalue)
     <input type="submit" value="Match"/>
}

答案 2 :(得分:3)

如果您的隐藏值是静态的。请尝试此

查看

@using (Html.BeginForm(new { id = "postform" }))
{


 @Html.HiddenFor(m=>m.hiddevalue)
    <input type="hidden" id="" value="7" name="hidden1" />
    <input type="hidden" id="" value="7"  name="hidden2"/>

    <input type="submit" value="Match"/>
}

<强>控制器

[HttpPost]
public ActionResult MapIcon(Hidden hidden, string hidden1, string hidden2)
{
    var hiddenvalue = hidden.hiddevalue;
    var hiddenvalue1 = hidden1;
    var hiddenvalue2 = hidden2;
    var value=hidden.hiddevalue;//null
    FormCollection col = new FormCollection();
    var value = col["hidden1"];
  //  string value = mycontroler.ControlName;

    return View(hidden);
}

<强>脚本

 $(document).ready(function () {

 $('#hiddevalue').val("Jaimin");

});