Мне интересно, есть ли способ заставить элементы управления 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, как с тегами <%%> и всем остальным. Спасибо!