2012-12-05 58 views
5

我正在Monoouch上構建iPhone應用程序。我的部分項目使用本地網站內容。我將用於該網站的所有html,js,css和圖像複製到一個文件夾中,並將其導入到我的monotouch項目中。我已將所有這些文件的構建選項設置爲內容。monotouch uiwebview找不到本地html

予加載本地網絡內容,如以下:

this.url = Path.Combine(NSBundle.MainBundle.BundlePath, 「內容/ index.html中」); webView.LoadRequest(new NSUrlRequest(new NSUrl(this.url,false)));

問題是,當我運行該項目,但找不到我的地方網站和我得到了下面當我嘗試調試消息:

所請求的URL不在此服務器上找到。

/用戶/ * **** /庫/ Application Support/iPhone 模擬器/ 4.3 /應用/ 092E0D85-92F4-4F4E-9CD2-3FBBCD797F76/Project.app /內容/ index.html的

有趣的是,當我將鏈接複製到Safari瀏覽器,網頁是沒有我試圖清理和重建項目幾次,但沒有改變任何問題

顯示。

任何人都可以幫助我嗎?

我使用的是OS X獅子頗富10.8.2 MonoDevelop的3.0.5,6.0.6 MonoTouch的,xcode的提前

+0

您是否真的**正在使用MonoTouch 3.0.2?那已經過了幾年了,你不可能再找到任何人使用它了。當前(穩定)版本是6.0.6,與Snow Leopard兼容的最新版本是5.4(使用Xcode 4.2)。 – poupou

+0

對不起,輸入錯誤。我使用MonoDevelop 3.0.5和5.x Monotouch。我正在更新整個系統,包括OS X,Xcode和Monotouch到最新版本。希望它能解決問題。 – hoangnm284

+0

我已經更新了所有最新的,但這仍然是一個問題。任何人都可以有這方面的經驗? – hoangnm284

回答

2

很奇怪4.5.2

感謝,工作很適合我。

試試這個:

var fileName = "Content/index.html"; 
webView.LoadHtmlString (File.ReadAllText (fileName), 
         NSUrl.FromFilename (fileName)); 
0

感謝您的幫助。

我剛剛意識到我已經將參數放在鏈接中,例如:index.html?p1 = v1 & p2 = v2,並且它使鏈接無效。如果我刪除這些參數,它的工作沒有任何問題。

對不起,我錯過了關於我的問題的信息。

現在,如果我不能像普通網站那樣做,我怎樣才能將參數傳遞給我的本地網站?

+0

如果您需要爲您的問題添加其他信息,請編輯它。添加評論作爲答案令人困惑。 – Jason

+0

這就是說,當你在查詢字符串上傳遞參數時,通常服務器上有一些東西(PHP,ASP.NET,Rails等)解釋它們並用HTML響應。當您在應用程序中使用本地HTML頁面時,它們只是純HTML,不會發生服務器端處理。 – Jason

+0

使用javascript,我們仍然可以解析GET方法的參數。我在某處說過,使用jQuery我們可以得到POST的參數,但是我沒有測試它。 MT的問題是他們將參數視爲文件名的一部分,因此他們無法找到它。我通過從文件名中刪除參數來解決我的問題,然後使用MT執行javascript函數傳遞我的參數。感謝您的幫助。 – hoangnm284

0

一定要將htm的Build Action設置爲BundleResource - 使用此設置的代碼適用於我!

+2

發表評論,那應該是 – MuhammadHani

1

您可以使用NSURLComponent,如下所示。參數可以在NSURLComponent Query屬性中傳遞。

 string viewerPath = Path.Combine(NSBundle.MainBundle.BundlePath, string.Format("Content/pdfjs/web/{0}", _pdfViewerFileName)); 
     string queryString = string.Format("file={0}", _pdfFilePath); 
     NSUrlComponents components = new NSUrlComponents(viewerPath); 
     components.Query = queryString; 
     Control.LoadRequest(new NSUrlRequest(components.Url));