, я мог бы использовать
@Html.HiddenFor(x=> ViewData["crn"])
, но, как я понимаю,
Чтобы каким-то образом обойти эту проблему ( id = ViewData_crn_ и name = ViewData [crn]
), я попытался сделать следующее, но атрибут «значение» не устанавливается.
@Html.HiddenFor(x => x.CRN, new { @value="1"})
@Html.HiddenFor(x => x.CRN, new { @Value="1"})
генерирует
<input id="CRN" name="CRN" type="hidden" value="" />
<input Value="500" id="CRN" name="CRN" type="hidden" value="" />
Я что-то делаю не так ?? Спасибо
Вы пытались использовать модель представления вместо ViewData? Хелперы со строгим типом, заканчивающиеся на For
и имеющие лямбда-выражения, не могут работать со слабо типизированными структурами, такими как ViewData
.
Лично я не использую ViewData / ViewBag. Я определяю модели представлений, и действия моего контроллера передают эти модели представлений моим представлениям.
Например, в вашем случае я бы определил модель представления:
public class MyViewModel
{
[HiddenInput(DisplayValue = false)]
public string CRN { get; set; }
}
чтобы действие моего контроллера заполнило эту модель представления:
public ActionResult Index()
{
var model = new MyViewModel
{
CRN = "foo bar"
};
return View(model);
}
, а затем просто получил бы строго типизированное представление используйте помощник EditorFor
:
@model MyViewModel
@Html.EditorFor(x => x.CRN)
, который сгенерирует мне:
<input id="CRN" name="CRN" type="hidden" value="foo bar" />
в результирующем HTML.