2012-03-23 83 views
3
  • 編程我的第一個asp.net網站
  • 要在iPhone safari上工作。

我Default.aspx中體代碼:Default.aspx的的找不到變量__doPostBack

<div id="pnlLogin" class="panel" selected="true" > 
    <h2>Login Details</h2> 
    <form ID="fLogin" runat="server" class="panel" selected="true" > 
     <fieldset> 
      <div class="row"> 
       <label>Name</label> 
       <asp:TextBox id="txtUserName" runat="server" placeholder="Your username" /> 
      </div> 
      <div class="row"> 
       <label>Password</label> 
       <asp:TextBox id="txtPassword" textmode="Password" runat="server" placeholder="Your password" /> 
      </div> 
     </fieldset> 
     <asp:LinkButton id="btnLogin" class="whiteButton" text="Log me in!" runat="server" onclick="Login_Clicked" /> 
    </form> 
</div> 

在後臺cs文件:

protected void Login_Clicked(object sender, EventArgs e) 
    { 
     var username = txtUserName.Text; 
     var password = txtPassword.Text; 

     if (username == "masi" && password == "pass") 
     { 
      Response.Redirect("ControlPanel.aspx"); 
     } 
    } 

整頁資料來源桌面Safari瀏覽器:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
    <head><title> 
    Cover Plus 
</title><meta id="viewport" name="viewport" content="width=device-width, user-scalable=0, initial-scale=1.0" /><link href="iui/iui.css" rel="stylesheet" type="text/css" /><link title="default" href="iui/t/default/default-theme.css" rel="stylesheet" type="text/css" /> 
     <script type="application/x-javascript" src="iui/iui.js"></script> 


     <link rel="apple-touch-icon" href="img/touch-icon-iphone.png" /><link rel="apple-touch-icon" sizes="72x72" href="img/touch-icon-ipad.png" /><link rel="apple-touch-icon" sizes="114x114" href="img/touch-icon-iphone4.png" /><link rel="apple-touch-startup-image" href="img/startup.png" /> 
    <script type="text/javascript"> 
     function login() 
     { 
      var isVerified = Verify(); 
      if (isVerified) { 
       ident.setAttribute("placeholder", "valid"); 
      } 
     } 
    </script> 
</head> 
    <body> 


<div class="toolbar"> 
    <h1 id="pageTitle">Login</h1> 
</div> 

<div id="pnlLogin" class="panel" selected="true" > 
    <h2>Login Details</h2> 
    <form method="post" action="Default.aspx" id="fLogin" class="panel" selected="true"> 
<div class="aspNetHidden"> 
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> 
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> 
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTY2NzcyMzEwM2Rk+CbfIXzzsip63MXaBjBxcQhbraDzpmAHkc6FH4cZIiE=" /> 
</div> 

<script type="text/javascript"> 
//<![CDATA[ 
var theForm = document.forms['fLogin']; 
if (!theForm) { 
    theForm = document.fLogin; 
} 
function __doPostBack(eventTarget, eventArgument) { 
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 
     theForm.__EVENTTARGET.value = eventTarget; 
     theForm.__EVENTARGUMENT.value = eventArgument; 
     theForm.submit(); 
    } 
} 
//]]> 
</script> 


<div class="aspNetHidden"> 

    <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBALC/9DxDQKMrfuqAgKOsPfSCQKRnIq9D4GV4RtvQeooslP0bkLhJVOPoPu6Gt6b0rGrW9P8fPbK" /> 
</div> 
     <fieldset> 
      <div class="row"> 
       <label>Name</label> 
       <input name="ctl00$MainContent$txtUserName" type="text" id="MainContent_txtUserName" placeholder="Your username" /> 
      </div> 
      <div class="row"> 
       <label>Password</label> 
       <input name="ctl00$MainContent$txtPassword" type="password" id="MainContent_txtPassword" placeholder="Your password" /> 
      </div> 
     </fieldset> 
     <a id="MainContent_btnLogin" class="whiteButton" href="javascript:__doPostBack(&#39;ctl00$MainContent$btnLogin&#39;,&#39;&#39;)">Log me in!</a> 
    </form> 
</div> 

</body> 
</html> 

問題:

它適用於桌面Safari /鉻細,I型馬嘶/通行證,然後按下按鈕,進入到新的頁面,但在iPhone上它給了我一個JavaScript錯誤控制檯和不沒有。

它說: 的Javascript:錯誤 未定義 的ReferenceError:找不到變量:__doPostBack

我爲做什麼完全一無所知。

更新 - 解決方案:

筆者隨機刪除的JavaScript的點點我曾在報頭,現在它工作正常(旁邊沒有什麼做的)。

+0

你有幾種表格? ASP .Net WebForms只能使用一種格式。此外,請確保您沒有嵌套表格 – 2012-03-23 11:34:23

+0

,據我所知我有一個格式爲每個aspx頁面,所以default.aspx只有1格式。 – sprocket12 2012-03-23 11:35:54

+0

您可能有機會使用可能存在此功能的主頁面,因爲它顯示在源代碼中,因此您必須手動將其添加到頁面中。 – 2012-03-23 11:42:49

回答

3

問題是ASP.net對待未知瀏覽器的默認方式,比如iPhone。儘管假設未知的瀏覽器可以使用javascript ...會很好,但您可以指定瀏覽器在web.config或machine.config部分中具有的功能。

退房http://slingfive.com/pages/code/browserCaps/用於更新的browserCaps配置文件的asp.net

這裏是匹配基於Gecko瀏覽器的情況下的一個實例(6+的Netscape,Mozilla的/火狐,...)

參考:this question and answer.

<case match="^Mozilla/5\.0 \([^)]*\) (Gecko/[-\d]+)(?'VendorProductToken' (?'type'[^/\d]*)([\d]*)/(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*)))?"> 
        browser=Gecko 
        <filter> 
          <case match="(Gecko/[-\d]+)(?'VendorProductToken' (?'type'[^/\d]*)([\d]*)/(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*)))"> 
            type=${type} 
          </case> 
          <case> <!-- plain Mozilla if no VendorProductToken found --> 
            type=Mozilla 
          </case> 
        </filter> 
        frames=true 
        tables=true 
        cookies=true 
        javascript=true 
        javaapplets=true 
        ecmascriptversion=1.5 
        w3cdomversion=1.0 
        css1=true 
        css2=true 
        xml=true 
        tagwriter=System.Web.UI.HtmlTextWriter 
        <case match="rv:(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*))"> 
          version=${version} 
          majorversion=0${major} 
          minorversion=0${minor} 
          <case match="^b" with="${letters}"> 
            beta=true 
          </case> 
        </case> 
      </case>