【问题标题】:send java script function parameter to ASP.NET MVC helper method将 javascript 函数参数发送到 ASP.NET MVC 帮助器方法
【发布时间】:2012-11-30 14:32:22
【问题描述】:

我的 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);

【问题讨论】:

  • 你得到什么语法错误?
  • 我编辑了问题并写了错误

标签: javascript json asp.net-mvc-3 html-helper


【解决方案1】:

您将客户端代码 (javascript) 与服务器端代码 (HtmlHelper) 混合在一起。您不能将客户端变量传递给服务器端助手。如果 context 变量仅在客户端上是已知的,那么您将不得不编写客户端 javascript 函数而不是服务器端帮助程序。因此,将您在此 Html.GetStrippedString 帮助程序中编写的逻辑转移到您可以从脚本中调用的 javascript 函数中。

【讨论】:

  • 我对 java 脚本不太熟悉,所以你不能像我解释我的问题的 C# 方法那样帮助编写替换函数吗?
  • 给定显示的输入,这个函数应该返回什么?
【解决方案2】:

实际上,如果您使用 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);
}

【讨论】:

  • 我声明了一个 java 变量来保存来自 GetStrippedString 的数据,并在其他一些函数中使用该变量。我在调用 getJSON 后声明了该函数,但似乎在该函数之后调用了 geJson
  • 你能举个例子吗?我想尝试追踪逻辑,看看什么时候应该调用所有内容,以确保其他函数没有被首先命中。
  • 我找到了解决办法,问题出在异步 ajax 调用上
  • 啊,是的,那会很麻烦。很高兴你明白了。
猜你喜欢
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
  • 2016-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多