Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET MVC-如何在javascript中执行条件C#代码_Javascript_Asp.net Mvc 3 - Fatal编程技术网

ASP.NET MVC-如何在javascript中执行条件C#代码

ASP.NET MVC-如何在javascript中执行条件C#代码,javascript,asp.net-mvc-3,Javascript,Asp.net Mvc 3,首先,我不是一个MVC开发人员-我只是想在他们的项目中帮助一些MVC人员,因为他们有各种各样的限制,所以如果这是n00b的事情,请不要开枪:) 事情是这样的——这个团队使用了一个框架,它具有如下的渲染功能: ObjMP.render ({ // various configuration options labels: [ { settings: '@Html.Raw(lablesPosition[0])', content: '@Html.Raw(lablesContent[0])'

首先,我不是一个MVC开发人员-我只是想在他们的项目中帮助一些MVC人员,因为他们有各种各样的限制,所以如果这是n00b的事情,请不要开枪:)

事情是这样的——这个团队使用了一个框架,它具有如下的渲染功能:

ObjMP.render ({
// various configuration options
   labels: [
 { settings: '@Html.Raw(lablesPosition[0])', content: '@Html.Raw(lablesContent[0])' },
 { settings: '@Html.Raw(lablesPosition[1])', content: '@Html.Raw(lablesContent[1])' }
 ]
困扰我的配置选项是上面显示的“标签”选项。 “lableContent”和“lableposition”实际上是我的.cshtml文件中的IList

如您所见,上面的代码使用存储在集合中索引0和1处的设置。这实际上是一个硬编码的东西

我不能保证该系列中只有2件物品

要克服这一点,我可以采取以下两种方法:

1> 以某种方式编写一个foreach循环,在该循环中,我可以执行类似于lableposition[I]的操作,而不是使用lableposition[0]等

2> 我知道每个场景集合中的记录数,因此根据场景选择,我使用if-else块编写5个设置或4个设置,如下所示:

if(selectiong=="a")
{
labels: [
 { settings: '@Html.Raw(lablesPosition[0])', content: '@Html.Raw(lablesContent[0])' },
 { settings: '@Html.Raw(lablesPosition[1])', content: '@Html.Raw(lablesContent[1])' }
 ]
}

else if(Select=="b")
{
labels: [
 { settings: '@Html.Raw(lablesPosition[0])', content: '@Html.Raw(lablesContent[0])' },
 { settings: '@Html.Raw(lablesPosition[1])', content: '@Html.Raw(lablesContent[1])' },
{ settings: '@Html.Raw(lablesPosition[2])', content: '@Html.Raw(lablesContent[2])' }
 ]
}
第二种方法的问题是,当呈现页面时,RAZOR引擎似乎在运行时使用“@”计算所有表达式,而不管JS中的if-else条件值,因此代码对我来说是中断的-基本上,当集合只有2个项时,它可能会尝试访问集合中位置6处的值

我怎样才能解决这个问题?
(ASP.NET MVC 3)

如果我理解这个问题,你的问题是RAZOR无法知道基于Javascript跳过哪些C值。它不计算JS,只是生成JS

它认为如果您的逻辑支持的话,您需要将您的条件应用到服务器级别(而且它应该这样做)

这意味着,
if(selectiong==“a”)
不应该是JS
if/else
它应该是C
if/else


请看一下这一点,以便了解基本的实现

谢谢你的指点。最后,我找到了一种在C代码中动态生成“标签”数据的方法,并将其以变量形式发送到我的JS,该变量在配置选项中评估为@Html.Raw,效果很好。

使用
foreach
/
进行手动索引项的循环输入。我有点困惑,您希望在C#中实现特定的java脚本例程。您想根据C#代码中的可用内容更改JavaScript函数吗?真正的问题是,你希望额外的JS发生什么?