Свойство Html.HiddenFor value не устанавливается

, я мог бы использовать

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

Я что-то делаю не так ?? Спасибо

27
задан tereško 12 April 2013 в 21:14
поделиться

1 ответ

Вы пытались использовать модель представления вместо 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.

38
ответ дан 28 November 2019 в 04:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: