Получение имен полей формы при отправке, когда форма является пользовательским элементом управления - PullRequest
0 голосов
/ 28 ноября 2011

Я медленно, шаг за шагом узнаю, что я делаю с ASP.NET

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

У меня есть форма, которая в основном представляет собой систему продаж.По сути, он состоит из двух пользовательских элементов управления, один из которых представляет собой форму для сведений о клиенте (имя, адрес и т. Д.), А второй - это форма для покупок клиента, он состоит из числовых строк, динамически создаваемых Javascript, созданным при перечислении элементовклиент покупает.

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

Когда загружен пользовательский элемент управления,поле, которое содержит Имя Клиента, переименовано "m$mainContent$customerForm$name" Я понимаю, откуда это берется, "m" - это идентификатор моей главной страницы, "mainContent" - это основной заполнитель контента, а "customerForm" - это имя пользовательского элемента управления..

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

IЯ вижу, что есть способы, которыми я мог бы справиться с этим с помощью Javascript, но форма не нуждается в отправке AJAX, нормальное сообщение подойдет для этого, поэтому, когда я открываю страницу получения, я хочу вызвать Request.Form("name")%, чтобы сохранитьимя клиента в базе данных, но, конечно, мне действительно нужно Request.Form("m$mainContent$customerForm$name")%

Как бы мне динамически извлечь эти префиксы из формы публикации, чтобы гарантировать, что если я переименую что-либо или используюв другом сценарии проблема не решится?

Я использую .NET 2.0, поэтому не могу использовать Static Client.

Ответы [ 3 ]

3 голосов
/ 13 декабря 2012

Это действительно старый, но давайте посмотрим, будет ли это полезно для вас.

Получение этого примера Мне удалось получить значение из заданного имени поля без префикса.

Я уверен, что это не лучшее решение, но оно мне пригодилось. Допустим, вы хотите восстановить значение поля с именем "hfIdAviso", которое появляется в POST как "ctl00 $ body $ hfIdAviso":

var value = Request.Form.Cast<string>()
                    .Where(key => key.EndsWith("hfIdAviso"))
                    .ToDictionary(key => key, key => Request.Form[key])
                    .Values.FirstOrDefault();

Это вернет значение для этого поля.

Надеюсь, это поможет.

1 голос
/ 28 ноября 2011

Если вы включите runat = "server" в объявление вашего пользовательского элемента управления на странице ASPX, то вы можете получить доступ к этому элементу управления, просто используя значение идентификатора элемента управления.

Например, в ASPX:

<uc:MyUserControl ID="mycontrol1" runat="server" />

В коде (в синтаксисе C #):

object foobar = mycontrol1.SelectedValue;
0 голосов
/ 31 октября 2014

Предположим, у вас есть форма внутри пользовательского элемента управления с полем TextBox с ID = "txtfname". Вы зарегистрировали свой пользовательский элемент управления на странице 1 и хотите отправить данные формы POST на страницу 2:

на странице 1пользовательский элемент управления:

<My:WebUserControl1 ID="myuc" runat="server" />

в коде страницы 2, вы можете получить значение поля формы пользовательского элемента управления (txtfname) следующим образом:

string firstName = Request.Form["myuc$txtfname"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...