Мне пришлось сделать следующий обходной путь:
Я использовал Request.Browser.Browser, чтобы проверить, был ли браузер IE ..., а затем я изменил текст в следующем формате:
Dim s As New StringBuilder
s.Append("<iframe name='myIframe' style='visibility:hidden;height:0;width:0;'></iframe><div style='clear:both'></div><h2 class='sIFR-replaced1' style='text-align:left'><embed height='20' id='h2heading' width='282' src='swf/frutiger_light.swf' quality='best' flashvars='txt=Document Description&textalign=left&offsetTop=0&textcolor=#878787&hovercolor=#76b404&linkcolor=#87be22&w=282&h=20' wmode='transparent' bgcolor='transparent' sifr='true' type='application/x-shockwave-flash' class='sIFR-flash1' style='width: 282px; height: 20px;'/><span class='sIFR-alternate'>Document Description</span></h2><p align='left'><i>" + d.DocDescription + "</i><BR><BR></p>")
s.Append("<p>Please fill out the following information so that we can proceed with providing you the link to the document</p>")
If (Not Request.Browser.Browser.Equals("IE")) Then
s.Append("<form id='myDocForm' name='myDocForm' target='myIframe' action='" + d.DataSubmissionPath + "' method='POST' >")
End If
s.Append("<table class='clearBoth' width='45%'><tr><td>")
s.Append("<input type=hidden name='oid' id='oid' value='" + d.OID + "'></td><td>")
s.Append("<input type=hidden name='retURL' id='retURL' value='" + "" + "'></td></tr>")
' debug(info)
s.Append("<input type='hidden' name='debug' value=1>")
s.Append("<input type='hidden' name='debugEmail'")
s.Append("value=''>")
s.Append("<tr><td class='formlabel'>First Name*</td>")
s.Append("<td class='formfield'><input type='text' id='first_name' size='20' maxlength='40' name='first_name'>")
s.Append("</td></tr>")
s.Append("<tr><td class='formlabel'>Last Name*</td>")
s.Append("<td class='formfield'><input type='text' id='last_name' size='20' maxlength='40' name='last_name'>")
s.Append("</td></tr>")
s.Append("<tr><td class='formlabel'>Email*</td>")
s.Append("<td class='formfield'><input type='text' id='email' size='20' maxlength='40' name='email'>")
s.Append("</td></tr>")
s.Append("<tr><td class='formlabel'>Work Title</td>")
s.Append("<td class='formfield'><input type='text' id='work_title' size='20' maxlength='40' name='work_title'>")
s.Append("</td></tr>")
s.Append("<tr><td class='formlabel'>Company</td>")
s.Append("<td class='formfield'><input type='text' id='company' size='20' maxlength='40' name='company'>")
s.Append("</td></tr>")
s.Append("<tr><td> </td> <td></td></tr>") 'empty row for spacer cells
s.Append("<tr><td> </td><td class='formbuttons' align='right'><input type='Button' id='btnsubmit' name='btnsubmit' value='Submit' onclick='showDocPanel();'>")
s.Append("</td></tr>")
s.Append("</table>")
If (Not Request.Browser.Browser.Equals("IE")) Then
s.Append("</form>")
End If
formSalesForce.Text=s.ToString()
Таким образом, браузер IE показал таблицу, так как при использовании IE тег не был прикреплен к литералу.
Теперь; при использовании IE у меня возникла проблема с отправкой формы на внешний веб-сайт, так как формы не было, ее нельзя было отправить ... поэтому мне пришлось использовать дубликат формы, созданный javascript:
Использовал этот фрагмент JavaScript, взятый с этого сайта: http://en.allexperts.com/q/Javascript-1520/create-form-submit-fly.htm
function getNewSubmitForm(){
var submitForm = document.createElement("FORM");
document.body.appendChild(submitForm);
submitForm.method = "POST";
return submitForm;
}
//helper function to add elements to the form
function createNewFormElement(inputForm, elementName, elementValue){
var newElement = document.createElement("<input name='"+elementName+"' id='" + elementName + "' type='hidden'>");
inputForm.appendChild(newElement);
newElement.value = elementValue;
return newElement;
}
//function that creates the form, adds some elements
//and then submits it
function createFormAndSubmit(){
var submitForm = getNewSubmitForm();
//alert("form created");
createNewFormElement(submitForm, "oid", document.getElementById("oid").value);
createNewFormElement(submitForm, "debug", "1");
createNewFormElement(submitForm, "debugEmail", "");
createNewFormElement(submitForm, "first_name", document.getElementById("first_name").value);
createNewFormElement(submitForm, "last_name", document.getElementById("last_name").value);
createNewFormElement(submitForm, "email", document.getElementById("email").value);
createNewFormElement(submitForm, "work_title", document.getElementById("work_title").value);
createNewFormElement(submitForm, "company", document.getElementById("company").value);
createNewFormElement(submitForm, "retURL", window.location.href);
//alert(window.location.href + "::elements added");
submitForm.action= "my external website url";
submitForm.target='myIframe';
//alert("submitting");
submitForm.submit();
}
Теперь, когда форма отправлялась на внешний URL-адрес, возникла обратная передача, чтобы обойти это, я сделал:
- создал скрытый iframe и добавил его к литеральному тексту (см. Приведенный выше код для литерального текста)
- установить в качестве цели формы имя этого фрейма (см. Приведенный выше код для литерального текста)
- установить цель дублированной формы javascript в качестве имени этого кадра (см. Приведенный выше код javascript)