Javascript中ASP核心属性的奇怪行为
我在ASP核心和Javascript方面遇到了一个奇怪的问题,并且找不到任何答案 我正在使用的网站的索引页从控制器接收一个ViewModel,其中包含两个属性。一个名为“testID”,另一个名为“test”。两者都有完全相同的信息,一个ID字符串 C#: 现在,在我的Razor页面上,我在标记上设置了一个onClickTest()方法:Javascript中ASP核心属性的奇怪行为,javascript,c#,asp.net,frontend,backend,Javascript,C#,Asp.net,Frontend,Backend,我在ASP核心和Javascript方面遇到了一个奇怪的问题,并且找不到任何答案 我正在使用的网站的索引页从控制器接收一个ViewModel,其中包含两个属性。一个名为“testID”,另一个名为“test”。两者都有完全相同的信息,一个ID字符串 C#: 现在,在我的Razor页面上,我在标记上设置了一个onClickTest()方法: <a href="#" onclick="onClickTest();"> Click Here <
<a href="#" onclick="onClickTest();"> Click Here </a>
正如您可以从上面的代码(Javascript)中看到的那样,打印“test”属性的行按预期工作,但名为“testid”的属性则不工作。打印“未定义”
然后,如果我去掉名称中的“id”部分或将其更改为其他内容(上面没有“id”一词),它就可以正常工作!
所以它一定和名字有关
现在,如果站点正在运行,并且我打开浏览器控制台并手动打印“console.log(ViewModelJS.testid)”之类的内容,那么它就可以正常工作了。但当我点击标签并调用函数时就不会了
有什么想法吗
非常感谢 “睾丸”!=“testid”怎么不区分大小写?如果您使用
ViewModelJS.TEST
该选项仍然有效吗?ViewModelJS
的运行时值是多少?最后,这到底有什么意义?如果要访问模型,即使它们是隐藏的输入,也要使它们成为html元素。@LucaProdan您可以使用中的信息来确定它是否存在以及它的实际名称。@LucaProdan这可能是由于TestID
属性的保护级别和/或序列化造成的你知道吗,你是对的。出于某种原因,Json.Serialize()函数将所有名称从C#中的标准Pascal大小写更改为Javascript中的驼峰大小写。。这就是我无法正确分配的原因。。。就像在Javascript版本中将TestID转换为TestID一样。。。谢谢你,伙计!!!
<a href="#" onclick="onClickTest();"> Click Here </a>
function onClickTest() {
ViewModelJS = @Html.Raw(Json.Serialize(Model)); //Translate C# Model to JS Model.
console.log('test id: ' + ViewModelJS.testid); // This print as UNDEFINED
console.log('test : ' + ViewModelJS.test); // This one prints fine.
}