Необходимые проверки полей в USER CONTROL запускаются во всех случаях этого пользовательского контроля, когда он размещен несколько раз на одной странице - PullRequest
1 голос
/ 12 ноября 2010

У меня есть usercontrol, в котором требуется проверка поля.У меня есть 2 экземпляра этого пользовательского контроля на одной веб-странице.Теперь, если я нажму кнопку в первом пользовательском контроле, сообщения проверки будут запущены для двух пользовательских элементов управления.Но должны быть запущены только обязательные поля этого пользовательского элемента управления.Пожалуйста, кто-нибудь может решить эту проблему.Спасибо Мадхави

Ответы [ 5 ]

3 голосов
/ 12 ноября 2010

Если вы не установили свойство ValidationGroup RequiredFieldValidator в вашем usercontrol, то проверка поля будет срабатывать при отправке формы независимо от того, какая кнопка вызвала обратную передачу.

Если вы хотите связать определенные валидаторы с определенными кнопками отправки, вам придется связать их с той же ValdiationGroup.

Если вы устанавливаете ValidatioGroup в вашем пользовательском элементе управления, но обнаруживаете, что валидациязапускается для всех экземпляров элемента управления, тогда вам нужно взять некоторый атрибут экземпляра пользовательского элемента управления и включить его в группу ValidationGroup, чтобы гарантировать, что пользовательский элемент управления проверяется исключительно для любой кнопки отправки на элементе управления.

ЗдесьВот пример:

<asp:TextBox ID="txtTest" runat="server"/>
<asp:RequiredFieldValidator ID="txtTestReqVal"
     runat="server"
     Display="Dynamic"
     ControlToValidate="txtTest"
     Text="* Field is required"
     ValidationGroup="valGroup<%= ClientId %>"
     CssClass="modelError"
     />
<asp:Button ID="btnSubmit" runat="server" 
     Text="Submit" 
     CausesValidation="true" 
     ValidationGroup="valGroup<%= ClientId %>" 
     />

Хитрость здесь заключается в части <% = ClientId%>.Это вставит уникальный идентификатор на стороне клиента экземпляров в значение группы проверки.Это означает, что вся проверка для этих элементов управления будет сгруппирована по одному уникальному экземпляру пользовательского элемента управления.Таким образом, вы можете иметь несколько экземпляров одного и того же пользовательского элемента управления на одной странице, но все они будут уникально проверены.

1 голос
/ 24 июня 2011

сделать ваши группы проверки runat = "server"

Затем дайте каждому уникальную группу проверки, например, такую:

string validationGroup = Guid.NewGuid().ToString();
txtContactNameValidator.ValidationGroup = validationGroup;
txtContactNumberValidator.ValidationGroup = validationGroup;
btnSave.ValidationGroup = validationGroup;

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

1 голос
/ 12 ноября 2010

Я думаю, вам нужно указать атрибут validatongroup для каждого элемента управления валидацией поля.

Для каждого пользовательского элемента управления будет определена своя собственная группа проверки.

См. Здесь

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

<uc:mycontrol id=u1 validationgroup="valA" .. />
<uc:mycontrol id=u2 validationgroup="valB" .. />

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

0 голосов
/ 12 ноября 2010
function ValidateRadio(button)
    {  
 var radioOptions = document.getElementById(button.id.split("_")[0] +'_rblPollOptions');
 var RVPollOptions = document.getElementById(button.id.split("_")[0] +'_RVPollOptions');
 var options = radioOptions.getElementsByTagName("input");
 var radioSelected=false;
  for (j=0; j < options.length; j++)
                {
                        if(options[j].checked)
                        {
                           radioSelected=true;
                           break; // Found it, proceed to next question  

                        }
   }
 if (!radioSelected) // no option selected
                {       // warn user, focus question //alert("You did not answer question");

                        RVPollOptions.style.visibility = "visible"; 
                         return false;
                }       
        }
</script>

<asp:RequiredFieldValidator ID="RVPollOptions" runat="server" ControlToValidate="rblPollOptions"
            ErrorMessage="Select option!"> </asp:RequiredFieldValidator>  
<asp:Button ID="btnPoll" Text="Vote" OnClientClick="javascript:return ValidateRadio(this)" runat="server"  OnClick="btnPoll_Click" />
0 голосов
/ 12 ноября 2010

Я думаю, что группа проверки не будет работать .. Так как это тот же пользовательский элемент управления, но 2 раза на страницу. Любая кнопка запускает проверку на обоих элементах управления пользователя, которые

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