имя элемента управления в TextBoxFor в MVC3 - PullRequest
7 голосов
/ 03 августа 2011

Можно ли управлять атрибутом имени, скажем, текстового текста при использовании TextBoxFor?

этот код в представлении

@Html.TextBoxFor(m => m.SearchParams.someParam)

производит это

<input id="SearchParams_someParam" name="SearchParams.someParam" type="text" value="">

но я не хочу, чтобы мое входное имя было «SearchParams.someParam», и я хотел, чтобы это было что-то вроде

<input id="SearchParams_someParam" name="MyPreferedName" type="text" value="">

, где MyPreferedName происходит из некоторых атрибутов .SearchParams.someParam в соответствующей модели.

Возможно ли это?Я знаю, что @ Html.TextBox делает это, но я не хочу жестко кодировать имя в представлении.

Ответы [ 5 ]

21 голосов
/ 15 апреля 2013
@Html.TextBoxFor(model => model.attr, new { Name = "txt1" })

Просто используйте «Имя» вместо «имя»

4 голосов
/ 29 февраля 2012

Кажется, что TextBoxFor метод не позволит вам использовать ключ @name в качестве атрибута htmlAttribute. Это имеет немного смысла, потому что если бы оно позволяло вам переопределить атрибут имени HTML, значение не было бы привязано к вашей модели должным образом в форме POST.

Вместо использования ...

@Html.TextBoxFor(x => Model.MyProperty, new { @name = "desired_name" }); // does not work

Мне пришлось использовать ...

@Html.TextBox("desired_name", Model.MyProperty); // works

Я не совсем уверен, почему первый вариант не работает, но, надеюсь, это поможет обойти его.

1 голос
/ 08 августа 2013

Используйте TextBox вместо TextBoxFor

@Html.TextBox("MyPreferedName", Model.SearchParams.someParam)
0 голосов
/ 20 августа 2012

TextBoxFor не позволяет установить атрибут имени.Этот обходной путь:

@Html.EditorFor(m => m.UserName, null, "user_name")

выходы:

<input class="text-box single-line" id="user_name" name="user_name" type="text" value="" />
0 голосов
/ 03 августа 2011

Разве это не работает? @Html.TextBoxFor(m => m.SearchParams.someParam, new { id="my_id" }) хотя для вашего конкретного случая это будет больше похоже на:

@Html.TextBoxFor(m => m.SearchParams.someParam, new { name = "MyPreferedName" })

Здесь вы найдете различные перегрузки для конструктора InputExtensions.TextBoxFor in MVC3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...