0

我的 asp.net mvc 应用程序中有一个 Ajax 表单,它有一个 onSuccess 回调,如下所示:

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 回答