0

以下のように onSuccess コールバックを持つ asp.net mvc アプリケーションに Ajax フォームがあります。

function onSuccessReport(context)
        {
            $('reportChart').empty();

            var line1=@Html.GetStrippedString(context.Expenses);
}

文字列を受け取って操作し、文字列を返す html ヘルパーを定義しました。

onSuccessReport に渡すのは、次のような構造を持つ json の結果です。

ここに画像の説明を入力

しかし、context.Expenses を送信できず、アプリケーションが構文エラーをスローします。

javascript 変数をヘルパーに送信するにはどうすればよいですか?

ありがとう

編集済み: 私の見解のエラー

****エラー 1 名前 'context' は現在のコンテキストに存在しません****

C# メソッド

json = json.Replace("\"Date\":", string.Empty);

            json = json.Replace("\"Total\":", string.Empty);

            json = json.Replace('}', ']');

            json = json.Replace('{', '[');

            return MvcHtmlString.Create(json);
4

2 に答える 2

2

クライアント側のコード (javascript) とサーバー側のコード (HtmlHelper) を混在させています。クライアント側の変数をサーバー側のヘルパーに渡すことはできません。変数がクライアントでのみ認識されている場合はcontext、サーバー側のヘルパーではなく、クライアント側の JavaScript 関数を記述する必要があります。したがって、このHtml.GetStrippedStringヘルパーでスクリプトから呼び出すことができる JavaScript 関数に記述したロジックに移動します。

于 2012-11-30T14:44:03.087 に答える
1

実際、Ajax を使用すると、JavaScript の値をサーバー側に送信できます。ヘルパー メソッドをそのまま使用する代わりに、コントローラー内のアクションに変更して、Json (文字列、数値、オブジェクトなど) を返します。以下は、試してみることのできる例です。

意見

function onSuccessReport(context)
    {
        $('reportChart').empty();
        var expenses = context.Expenses;
        $.getJSON('@Url.Action("GetStrippedString", "ControllerName")', { expenses: expenses }, function (data) {
            //pending what you pass back as data, do whatever with it
            alert(data);
        });
 }

コントローラ

public JsonResult GetStrippedString(string expenses)
{
    var result = string.Empty;
    //Do something to string
    return Json(result, JsonRequestBehavior.AllowGet);
}
于 2012-11-30T15:03:34.440 に答える