MVC. Първото поле на код с атрибут HiddenInput има генериран видим етикет

Използване на MVC5 Имам следното дефинирано в модела

   [HiddenInput(DisplayValue = false)]
    public DateTime Created { get; set; }

Не искам това поле да се показва в нито един от изгледите, генерирани от MVC. Въпреки това получавам етикет, генериран за това скрито поле при скеле на изгледите, както е показано по-долу.

Генериран формуляр

Какъв е правилният начин да използвате този атрибут, така че полето и неговият етикет да не се извеждат?


person Nick Le Page    schedule 27.03.2015    source източник
comment
Нямате никакви шаблони за редактор, които може да заменят поведението по подразбиране?   -  person    schedule 27.03.2015
comment
Не... Няма персонализирани шаблони за редактор   -  person Nick Le Page    schedule 27.03.2015


Отговори (4)


[HiddenInput(DisplayValue = false)]
public int Id { get; set; }

ще се изобрази като

<input id="Id" name="Id" type="hidden" />

when using Html.EditorForModel() or  Html.EditorFor(m => m.Id)

Проверете какво се изобразява във вашия потребителски интерфейс, type="hidden" или нещо друго.

person Vinod    schedule 27.03.2015
comment
Редакторът е скрит, което е точно това, което искам, проблемът е етикетът за този скрит вход - person Nick Le Page; 27.03.2015
comment
Би трябвало да работи. Можете да проверите с връзката по-долу: stackoverflow.com/questions/11052293/ stackoverflow.com/questions/2793545/ - person Vinod; 27.03.2015

Можете просто да използвате @Html.HiddenFor изглед отвътре, както е показано:-

Модел :-

public DateTime Created { get; set; }

Изглед: -

@Html.HiddenFor(model=>model.Created)
person Kartikeya Khosla    schedule 27.03.2015
comment
Но няма ли начин изгледите, генерирани от скелето, да бъдат правилни, като се използват атрибутите за анотация на данни? - person Nick Le Page; 27.03.2015
comment
@NickLePage... добре, мисля, че отговорът по-горе е правилният начин да разрешите проблема си ... аз лично използвам този подход.. - person Kartikeya Khosla; 27.03.2015

Знам, че това е стара публикация, но изпитвам същото. Гледката ми е настроена като

<div class="form-group row">
        @Html.LabelFor(model => model.Summary.LeaID, htmlAttributes: new { @class = "col-form-label col-md-3" })
        <div class="col-md-9">
            @Html.EditorFor(model => model.Summary.LeaID, new { htmlAttributes = new { @class = "form-control"}})
            @Html.ValidationMessageFor(model => model.Summary.LeaID, "", new { @class = "text-danger" })
        </div>
    </div>

И моят модел е

[HiddenInput(DisplayValue = false)]
    public string LeaID { get; set; }

Когато изгледът се визуализира, получавам етикета (LabelFor), но EditorFor е скрит правилно.

person da_jokker    schedule 26.07.2018

Ако единственият ви проблем е, че етикетът се показва, тогава анотирайте свойството на модела с атрибут Display:

[HiddenInput(DisplayValue = false)]
[Display(Name ="")]
public string LeaID { get; set; }

Ако направите това, етикетът няма да се покаже, но все пак ще имате бяло пространство на екрана за мястото, където е трябвало да се появи сегментът LeaID. Като алтернатива можете ръчно да промените изгледа, както Kartikeya Khosla предложи.

person HRK    schedule 23.12.2019