我的jQuery参数无法在脚本区域中访问的C#方法识别 - javascript

我试图在JavaScript中访问C#方法,但是该方法不接受本地参数,并说该参数在当前上下文中不存在。

var typeofServiceNumber = $("#serviceType").val();
@MyStaticClass.StringEncoding(Convert.ToString(typeofServiceNumber));

方法无法识别上述typeofServiceNumber

参考方案

剃刀代码在响应流中返回HTML之前在服务器端执行。

Javascript在生成的HTML中在客户端执行。

因此,您不能将Javascript变量传递给Razor方法,并且会收到消息,提示无法识别typeOfServiceNumber。

为了得到认可,它要么需要通过数据传递到View(ViewBag,Model等)在服务器端进行处理,要么需要在页面本身的Razor标记中声明并分配给它。

编辑:澄清最后一点:

var typeofServiceNumber = $("#serviceType").val();
@MyStaticClass.StringEncoding(Convert.ToString(typeofServiceNumber))

您在此处的第一行全部发生在最终用户的浏览器中。

第二行全部发生在服务器上。您看到错误消息是因为您试图将“ typeofServiceNumber”传递给您的方法,并且此时甚至没有声明该变量。

在不确切知道您要实现什么目标的情况下,我很难就如何解决您的问题给出准确的答案。但是这里有两种可能性:

1)在将网页提供给最终用户之前,您已经知道$("#serviceType").val()将会是什么,因为该值是在服务器端设置的。

控制器:

public ActionResult MysteryController()
{
   ...your code here to work out what the service type is...

   ViewBag.serviceType = serviceType;

   return View();
}

视图:

...lots of lovely html and such...

<script>
  @MyStaticClass.StringEncoding(Convert.ToString(ViewBag["serviceType"]));
</script>

我看不到@MyStaticClass.StringEncoding()的输出是什么,但在这一点上我必须假设它正在执行应执行的操作。

尽管逻辑在控制器和视图之间分开,但所有这些都是在服务器端发生的。

我的下半部分“或者需要在页面本身的Razor标记中声明并分配给它”。指此方法的一种变体可能涉及通过将数据封装在Razor代码块中来操纵View本身中的数据,如下所示:

@{
   var typeofServiceNumber = @MyStaticClass.StringEncoding(Convert.ToString(ViewBag["serviceType"]));    
}

我最初并未真正解决的替代方法是:

2)您不知道$("#serviceType").val()的值将在页面加载之前是什么,因为最终用户正在设置@MyStaticClass.StringEncoding(Convert.ToString(typeofServiceNumber))的值,并且在将数据提交到服务器之前需要使用您的函数:

在这种情况下,对您不利,您将不得不在JavaScript中复制该函数并将其包含在网页本身中。

Javascript-从当前网址中删除查询字符串 - javascript

单击提交按钮后,我需要从网址中删除查询字符串值。我可以用jQuery做到这一点吗?当前网址:siteUrl/page.php?key=value 页面提交后:siteUrl/page.php 实际上,我已经从另一个带有查询字符串的页面着陆到当前页面。我需要在页面首次加载时查询字符串值以预填充一些详细信息。但是,一旦我提交了表格,我就需要删除查询字符串值。我已…

Mongo汇总 - javascript

我的收藏中有以下文件{ "_id": ObjectId("54490b8104f7142f22ecc97f"), "title": "Sample1", "slug": "samplenews", "cat": …

JavaScript中的字符串评估函数 - javascript

            JavaScript中是否有任何内置函数,例如Python中的eval内置函数?注意:eval函数将方程式作为字符串并返回结果。例如,假设变量x为2,则eval("2x+5")返回9。 参考方案 是的,JavaScript中也有eval函数。此外,该声明应有效用于评估,即eval("2*x+5"…

如何在JQuery中操作JSONArray - javascript

我有一个php函数,它以JSON返回此代码{"0":{"title":"Dans l\u2019appartement"},"1":{"title":"A l\u2019a\u00e9roport - D\u00e9part de B\u00e9at…

在两个值之间匹配并返回正则表达式 - javascript

我正在尝试使用正则表达式从字符串中获取值,该值是tt="和"&之间的文本的值因此,例如,"tt="Value"&"我只想从中得到单词"Value"。到目前为止,我已经有了:/tt=.*&/这给了我"tt=Value"&,然后,要…