2011-03-30 2 views
0

C#의 타사 URL에 양식을 게시해야합니다. 입력 필드는 타사에서 기대하는 것과 일치하도록 이름을 지정해야합니다 (이 경우 "전자 메일 주소"등). 표준 "input"태그를 사용하면 컨트롤을 검증 할 수있는 좋은 방법이 없습니다. 이 예제에서와 같이 "asp : TextBox"를 사용하면 내 필드의 이름이 바뀌고 내 게시물이 엉망이됩니다. 도움!C#에서 "Named"입력을 게시하고 유효성을 검사하는 방법은 무엇입니까?

 <asp:TextBox id="CustomerEmailInput" runat="server" 
      name="Email Address" 
      CssClass="tb5a" >  
    </asp:TextBox> 
    <asp:RequiredFieldValidator ID="customerEmailRequired" runat="server" 
      ControlToValidate="CustomerEmailInput" 
      display="Dynamic" 
      ErrorMessage="*"> 
    </asp:RequiredFieldValidator> 
    <asp:Button runat="server" 
      PostBackUrl="http://ThirdPartyUrl.com" 
      Text="Submit" /> 

따라서 위의 내용은 다음과 같습니다. "전자 메일 주소"가 될 이름이 필요하거나 입력 필드의 유효성을 검사하는 좋은 방법이 필요합니다.이 예제는 단순화되었으므로 더 많은 필드와 정규식 유효성 검사가 있습니다.

<div> 
    <input type="text" name="ctl00$ContentPlaceHolder1$CustomerEmailInput" class="tb5a" id="ctl00_ContentPlaceHolder1_CustomerEmailInput"> 
    <span style="color: Red; display: none;" id="ctl00_ContentPlaceHolder1_customerEmailRequired">*</span> 
    <input type="submit" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$ContentPlaceHolder1$ctl00&quot;, &quot;&quot;, true, &quot;&quot;, &quot;http://thirdpartyurl.com&quot;, false, false))" value="Submit" name="ctl00$ContentPlaceHolder1$ctl00"> 
</div> 

답변

1

당신이 당신의 서버에 다시 게시하지 않고 제 3 자에게 양식에서 바로 게시하는 경우, 기존의 asp.net 웹 양식에서 가장 간단한 방법은 양식을 만든 다음이에 대한 조치의 설정하는 것입니다 제 3 자 URL을 명시 적으로 사용하고 태그를 사용하여 일반 오래된 기본 HTML을 사용하여 내용을 소개합니다. 그런 다음 자바 스크립트를 도입하여 클라이언트 측의 필드를 검증합니다.

다시 서버에 게시 한 후 타사에 게시 할 경우

, 그것은 다음 게시물 당신이 좋아하는 어떤 방법을 포맷 할 수 있습니다 무엇이든지 있기 때문에 아무 문제 없습니다.

+0

나는 발리의 바퀴를 재발견하고 싶지 않아요. 당신이 제안 할 수있는 좋은 자바 스크립트 유효성 검사 라이브러리가 있습니까? 나는 등 – Evan

+0

JQuery와 스택 오버플로에 따라 모든 일을 몇 가지 정규식 검증, 워터 마크, 필수 항목을 수행해야합니다 http://meta.stackexchange.com/questions/19478/the-many-memes-of-meta/19492# 19492 = D – Tejs

2

첫째, 정적에 ClientIDMode을 설정해보십시오. ID가 정적으로 유지되지만 이름 속성에 대해서는 확실하지 않습니다.

또한 ASP를 사용하지 않고 입력을 유지하기 위해 시도 할 수 있습니다 : 텍스트 상자를하지만, 어쨌든에 RUNAT = "서버"를 넣고 그것이 당신의 이름을 유지되는지 확인합니다. 다음과 같은 것 :

<input type="text" name="EmailAddress" id="EmailAddress" runat="server" /> 

그런데 왜 변수 이름에 공백이 있습니까? 계산하지 않습니다.

+0

이 확실히 제공하는 원래의 마크 업에 따라 속성 id'은'name'와'모두 유지됩니다 에반의 .NET 4. 그건 같은 ASP.NET은 공간이를 생성하기 위해 얻을 수있는 쉬운 방법은 없습니다 사용 이러한 속성이나 변수 이름에 허용 된 문자가 아닙니다. –

+0

감사합니다. 나는 ClientIDMode를 가로 질러 넘어졌지만, 4.0은 사용할 수 없다. 또한 첫 번째 예제와 같은 결과 인 두 번째 솔루션을 시도했습니다. 예, 공간이 바보 같지만 API를 제어 할 수 없습니다. 소식이 "이메일 주소"라는 이름의 입력으로 제대로 작동하는 것 같습니다. – Evan

+0

그럼 타사 URL에 직접 게시 하시겠습니까? 또는 자신 만의 포스트 백을 수행하고 나서 양식 데이터를 제 3 자 URL로 보내는 코드 숨김에 있습니까? – Kon

관련 문제