Как установить значение скрытого поля из контроллера в mvc

Я хочу установить значение скрытого поля из контроллера. Как я могу это сделать?

В части представления я дал вот так ..

 <div>
@Html.Hidden("hdnFlag", null, new { @id = "hdnFlag" }) 
</div>

person user2156088    schedule 01.06.2013    source источник
comment
@Html.HiddenFor(x =› x.UserName);   -  person Vishal Sharma    schedule 15.01.2014
comment
если вы не используете модель в соответствии с вашим вопросом, вы можете сделать это @Html.HiddenFor(hdnFlag, new {id = hdnFlag, value = hdnFlag_value}), если вы используете модель @Html.HiddenFor(model => model.hdnFlag, новый {значение = Model.hdnFlag})   -  person Snziv Gupta    schedule 27.04.2018


Ответы (8)


Вы можете установить соответствующее значение в ViewData/ViewBag:

ViewData["hdnFlag"] = "some value";

Но гораздо лучший подход, конечно, использовать модель представления:

model.hdnFlag = "some value";
return View(model);

и используйте строго типизированный помощник в своем представлении:

@Html.HiddenFor(x => x.hdnFlag, new { id = "hdnFlag" })
person Darin Dimitrov    schedule 01.06.2013

Пожалуйста, найдите код для уважаемого региона.

Контроллер

ViewBag.hdnFlag= Session["hdnFlag"];

Вид

<input type="hidden" value="@ViewBag.hdnFlag" id="hdnFlag" />

JavaScript

var hdnFlagVal = $("#hdnFlag").val();
person Krunal Solanki    schedule 03.12.2013
comment
Использование сеанса пользователя для хранения значения может усложнить приложение. По крайней мере, теперь вам нужно беспокоиться о том, допустимо ли значение в сеансе всякий раз, когда вам нужно его использовать. - person Geeky Guy; 12.12.2016

Без модели представления вы могли бы использовать простой скрытый ввод HTML.

<input type="hidden" name="FullName" id="FullName" value="@ViewBag.FullName" />
person mokumaxCraig    schedule 09.01.2015

Вам нужно написать следующий код на контроллере, предположим, что тест является моделью, а имя, адрес - полем этой модели.

public ActionResult MyMethod()
{
    Test test=new Test();
    var test.Name="John";
    return View(test);   
}

теперь используйте подобное в своем представлении, чтобы задать заданное значение скрытой переменной.

@model YourApplicationName.Model.Test

@Html.HiddenFor(m=>m.Name,new{id="hdnFlag"})

Это автоматически установит скрытое значение = john.

person sandeep modi    schedule 01.06.2013
comment
это не скомпилируется... var test.Name=John; ?? - person Vishal Sharma; 15.01.2014
comment
это не скомпилируется, потому что вам нужен класс со свойством имени - person CyberNinja; 06.04.2017

Пожалуйста, попробуйте использовать следующий способ.

@Html.Hidden("hdnFlag",(object) Convert.ToInt32(ViewBag.page_Count))
person RajeshVerma    schedule 30.04.2015
comment
Это действительно сработало для меня. Мое приложение работает как шарм! - person Guzzyman; 14.05.2015
comment
Большое спасибо - идеальное решение - после нескольких часов разочарования в решении этой проблемы. - person Bicycle Dave; 10.09.2015

если вы не используете модель в соответствии с вашим вопросом, вы можете сделать так

@Html.Hidden("hdnFlag" , new {id = "hdnFlag", value = "hdnFlag_value" })

иначе, если вы используете модель (учитывая, что передающая модель имеет свойство hdnFlag), вы можете использовать этот подход

@Html.HiddenFor(model => model.hdnFlag, new { value = Model.hdnFlag})
person Snziv Gupta    schedule 26.04.2018
comment
на самом деле синтаксис @Html.Hidden - person willyMon; 12.07.2019

Если вы собираетесь повторно использовать значение как идентификатор или хотите просто сохранить его, вы можете добавить «new {id = 'desiredID/value'}) в качестве его параметров, чтобы вы могли получить доступ к значению через jquery/javascript

@Html.HiddenFor(model => model.Car_id)
person CyberNinja    schedule 06.04.2017

Вы можете передать значение из контроллера, используя ViewData[""].

ViewData["hdnFlag"] = userId;
return View();

Теперь, в вашем представлении.

@{
    var localVar = ViewData["hdnFlag"]
}
<input type="hidden" asp-for="@localVar" />

Надеюсь, это поможет...

person Ashwini Gupta    schedule 02.04.2018