Удалить префикс в теге ввода, сгенерированном taghelper

С частичным видом, содержащим эту строку

<input asp-for="Form.FirstName" asp- class="form-control" />

Я получаю следующий результат

<input id="Form_FirstName" name="Form.FirstName" <!-- more stuff --> >

это означает, что мне нужно учитывать этот префикс "Form" в определении моего действия, используя атрибут Bind, например,

public async Task<IActionResult> SendContactForm([Bind(Prefix = "Form")] ContactFormViewModel model)

Мне не очень нравится использовать атрибут Bind, я думаю, что он очень подробный, и, поскольку он основан на тексте, его сложно поддерживать. Я бы предпочел указать помощнику тега netcore2 input просто опустить префикс при генерации HTML, но я не смог найти встроенного решения, но, возможно, я его пропустил ...

Я искал вспомогательные атрибуты встроенных тегов, а также атрибуты для добавления в мою модель, но ничего не нашел ...

Есть ли какой-нибудь трюк, чтобы удалить этот префикс, или я застрял с этим (уродливым) Bind?


person Mathieu VIALES    schedule 09.12.2017    source источник
comment
Это также означает, что защита от подделки становится префиксом (по крайней мере, в 2.1), что вызывает дополнительные проблемы.   -  person Base    schedule 01.04.2018


Ответы (1)


В этой ситуации один из вариантов - использовать <partial>, который содержит вашу форму, и использовать атрибут model для передачи вашей модели.

На ваш взгляд, это будет примерно так.

<partial name="PartialName" model="@Model.Form">

В вашем партиале вам больше не понадобится префикс в ваших asp-for выражениях.

<input asp-for="FirstName" class="form-control" />
person benembery    schedule 27.01.2021