[英]Accessing variables from the aspx.cs class in my website! (ASP.NET Web Forms)
[英]ASP.NET Web Forms - Send Ajax from Page.aspx to other Different.cs/MethodName
如何調用位於與調用 ajax function 的頁面不同的頁面內的(靜態 [WebMethod])方法()? 該頁面還使用母版頁設置。
MyController 繼承: Page (但沒有 forward.aspx 視圖)並具有此方法:
[WebMethod]
public static void HelloWorld(string txt) // , string[] parameters
{
System.Diagnostics.Debug.WriteLine("HelloWorld: " + txt);
}
我一直在 MyPage.aspx 上嘗試這個:
$.ajax({
url: "Controllers/MyController/HelloWorld",
type: "POST",
error: function () {
alert('error'); <-- only enters here
},
success: function () {
alert('success');
}
...
但是無論我如何使用../../、~/、.cs 調整路徑,我似乎都無法到達它。
這是一個 web forms 項目,但我想要一個集中的 controller - 我無法將項目轉換為 MVC。
好的,所以我們不關心控制器等等。 我們使用 web forms,我們想在另一個頁面中調用 + 使用 web 方法。 當然,事實上我傾向於將所需的 web 方法放在同一頁面中 - 因此多年來沒有使用“asmx”頁面。
您當然可以自由地使用或調用網站任何頁面中的網絡方法。
因此,問題實際上歸結為獲取正確的路徑名。 但是,如果我們從該頁面向下(或向上)幾個文件夾會發生什么? 我有點不想擔心,更糟糕的是,獲得 URL 路徑可能會很痛苦。 所以,這里的真正目標是消除那個痛點,而不必擔心 URL!
所以,我建議這個代碼:
<div>
<asp:TextBox ID="TextBox1" runat="server" ClientIDMode="Static"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server"
Text="Web method call (ajax)" CssClass="btn"
OnClientClick="MyTestWeb();return false"/>
</div>
<script>
function MyTestWeb() {
tBox = $('#TextBox1')
URL = '<%: ResolveClientUrl("~/Grids/Test1.aspx/HelloWorld") %>'
alert(URL) // testing - remove when happy
$.ajax({
type: "POST",
url: URL,
dataType: "json",
contentType: "application/json; charset=utf-8",
data: "{}",
success: function (data) {
// ok, have return value, place in
// TextBox1
tBox.val(data.d)
}
});
}
所以,我們得到了正確的工作 URL 上面。 在 asp.net 代碼中,您可以使用“~/”從根目錄解析路徑名,但這樣的表達式在 JavaScript 中不起作用。 (也不是在客戶端控件中)。
所以,我使用上面的服務器端表達式——它每次都會給我正確的 url。
對於此測試,我的頁面位於名為 Test4 的文件夾中。
但是,web 方法頁面位於名為 Grids 的文件夾中。
所以,返回的 URL 實際上變成了這樣:
請注意我們如何用“..”將軟木塞降低一層。 但是,真的誰在乎正確的 URL 應該是什么,我只關心我得到一個,我可以輸入一個我知道會起作用的 EASY url。
所以,我建議你試試上面的 - 並顯示正確的 URL,然后你可以輸入,或者繼續使用上面的想法。
另一個頁面中的 web 方法是這樣的:
<WebMethod()>
Public Shared Function HelloWorld() As String
Dim str As String = "Hello world"
Return str
End Function
所以,當我運行上面的,我得到/看到這個:
因此,至少,嘗試使用該服務器端表達式來解析 URL,彈出一個警告框,看看它吐出什么。 (但是,真的,你不必關心它吐出什么——只要它有效——對吧?)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.