gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 02:11:18 25 4
gpt4 key购买 nike

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

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

该方法无法识别上述typeofServiceNumber

最佳答案

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

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

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

要被识别,它要么需要通过传递到 View (ViewBag、模型等)的数据在服务器端进行处理,要么需要在页面本身的 Razor 标记内进行声明和分配。

编辑:澄清最后一点:

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

这里的第一行全部发生在最终用户的浏览器中。

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

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

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

Controller :

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() 的输出是什么,但我必须假设它正在做它应该做的事情。

虽然逻辑在 Controller 和 View 之间分开,但所有这些都发生在服务器端。

我的观点的后半部分“或者需要在页面本身的 Razor 标记内声明并分配它。”指的是这种方法的一种变体可能涉及操作数据这一事实通过将 View 本身包含在 Razor 代码块中,如下所示:

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

我最初没有真正提到的替代方案是:

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

如果是这种情况,那么 @MyStaticClass.StringEncoding(Convert.ToString(typeofServiceNumber)) 对您没有好处,您必须在 JavaScript 中复制该函数并将其包含在网页本身中。

关于javascript - 在脚本区域中访问的 C# 方法无法识别我的 jQuery 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49750557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com