0

パスは JavaScript パスです

    var fileName = args.get_fileName();
    lstImg.src = <%=GetListImageFilePath(fileName) %>

ファイル名は、javascript であり、.NET ではないため、エラーです。この引数を .NET コードに入れる方法

4

5 に答える 5

3

AJAX を使用する必要があります。これを行う簡単な方法の 1 つは、PageMethods を使用することです。まず、メソッドに属性を追加し[WebMethod]ます。

[WebMethod]
protected static string GetListImageFilePath(string fileName)
{

このメソッドは静的でなければなりません。

次にEnablePageMethods="True"、スクリプト マネージャーで設定します。次に、次のように JavaScript から C# コードを呼び出すことができます。

var fileName = args.get_fileName();
PageMethods.GetListImageFilePath(fileName, function (path) {
    lstImg.src = path;
});
于 2012-08-01T05:43:12.560 に答える
1

できません。JavaScript はクライアントで実行され、asp.net コードはサーバー上にあります。サーバーとの通信には別の方法を使用する必要があります。たとえば、Web サービスへの Ajax、ポストバックなどです。

于 2012-08-01T05:27:32.247 に答える
0

Web サイトに ashx (http ハンドラ) を追加すると、lstImg.src = '/example.ashx?name=' + fileName を使用できます。

public class ExampleHandler: IHttpHandler {

    public void ProcessRequest (HttpContext context) {
    var request = context.Request;
        string fileName = (string)request.QueryString["name"];
        // your logic
        context.Response.Write(yourpath)
    }

    public bool IsReusable {
    get {
        return false;
    }
    }
}
于 2012-08-01T05:41:14.633 に答える
0

JavaScriptがクライアント側、つまりサーバーコードがサーバーで実行されるブラウザで実行されているため、それを行うことはできません。できることは、GetListImageFilePath関数を変更して、画像ディレクトリのベース URL を返し、ファイル名を追加して画像パスを作成することです。

var fileName = args.get_fileName();
lstImg.src = <%=GetListImageFilePath() %> + '/' + fileName;

Javascript のサーバー タグがどのように処理されるかなどの詳細については、ここでStackOverFlow スレッドに回答しました。疑問を解消するために、ぜひご覧ください。

于 2012-08-01T05:33:48.223 に答える
0

get_fileName()サーバー側の機能だと思います。したがって、HTML から直接呼び出すことができます。これらのリンクを確認してください

http://weblogs.asp.net/jalpeshpvadgama/archive/2012/01/07/asp-net-page-methods-with-parameters.aspx http://stackoverflow.com/questions/7633557/asp-net-is -it-possible-to-call-methods-within-server-tag-using-eval

RegisterStartupScript()または を使用して JavaScript 関数を呼び出すと、RegisterClientScriptBlock()これらはサーバー側ではなくクライアント側で呼び出されます。

サーバー側ですぐに JavaScript 関数を呼び出したい場合は、同等のサーバー側関数を宣言します。

于 2012-08-01T05:40:46.000 に答える