Наименование элементов управления ASP.NET внутри пользовательских элементов управления с помощью ASP.NET MVC - PullRequest
0 голосов
/ 03 января 2009

Мне интересно, есть ли способ заставить элементы управления ASP.NET хорошо играть с моим приложением ASP.NET MVC. Вот что я делаю.

У меня есть страница заказа, которая отображает информацию об одном объекте заказа. На странице обычно будет набор строк данных, каждая из которых представляет объект OrderItem. Каждая строка является пользовательским элементом управления ASP.NET. На пользовательском элементе управления есть элемент формы с двумя текстовыми полями (Количество и Цена) и кнопка обновления.

Когда я нажимаю кнопку обновления, я ожидаю, что форма отправит данные для этой отдельной строки OrderItem в метод контроллера и обновит запись OrderItem в базе данных.

Вот моя проблема: когда сообщение происходит, фреймворк жалуется, потому что поля в форме не соответствуют параметрам в методе контроллера. Каждое поле формы имеет вид «OrderItem_1 $ Количество» или «OrderItem_2 $ Цена», а не просто «Количество» или «Цена», которые соответствуют параметрам моего метода.

Мне сказали, что я могу преодолеть это, убедившись, что ID всех моих элементов управления уникальны для этой страницы, но позволяют NAME s повторяться между различные формы, так что, если форма для отдельной строки размещена, имя может быть чем-то, что будет соответствовать тому, что на моем методе контроллера.

Единственная проблема заключается в том, что я использую элементы управления ASP.NET для своих текстовых полей (что я действительно хочу продолжать делать), и я не могу найти способ переопределить поле имени. В элементе управления ASP.NET отсутствует свойство Name, и даже когда я пытаюсь установить его, используя свойство средства доступа Attributes, говоря: control.Attributes ["Name"] = "Price"; " он просто добавляет другой атрибут name = в тег HTML, который не работает.

Кто-нибудь знает, как я могу заставить эту работу? Мне действительно не нравятся все функции HtmlHelper, такие как TextBox и DropDown, потому что я не хочу, чтобы мой .aspx был таким PHP или ASP, как с тегами <%%> и всем остальным. Спасибо!

1 Ответ

3 голосов
/ 04 января 2009

Я думаю, что вы находитесь между двумя мирами ASP.NET WebForms и ASP.NET MVC. Вам действительно нужно использовать методы Html.TextBox и т. Д. В MVC. Это дает вам полный контроль над разметкой, которая является одним из основных преимуществ MVC.

Сама проблема, с которой вы сталкиваетесь при управлении сгенерированным HTML, например, Получение двух атрибутов имени - это именно то, для чего предназначен MVC. Если ты перестанешь бороться с этим и плывешь по течению, это будет работать намного лучше.

Теги <%%> не проблема, если у вас там нет логики. Размещение простой логики представления в вашем представлении - это хорошо.

Если вам это не нравится, то, возможно, лучше придерживаться стандартного ASP.NET.

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