Как использовать значения скрытого поля из представления в контроллер в asp.net mvc 3

Мне нужно передать скрытые данные в действие контроллера. Поэтому я попытался следующим образом, но я получаю нулевые значения.

Я пробовал оба метода. я formelection и viewmodel concept

контроллер

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

ViewModel

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

Ответ 1

Мне кажется, что вы пытаетесь получить несколько значений в контроллере 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" />
}

Надеюсь, что это послужит тому, что вы ожидаете.

Ответ 2

Попробуйте это, в режиме Razor:

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

Ответ 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);
}

Script

 $(document).ready(function () {

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

});