Asp.net mvc .net Razor替代PHP echo

Asp.net mvc .net Razor替代PHP echo,asp.net-mvc,razor,Asp.net Mvc,Razor,我不熟悉.NETMVC和Razor引擎,但我已经使用PHP很长时间了。我试图在Razor中编写以下PHP代码: var data = [ <?php for ($i = 0; $i < 50; ++$i) { echo '[' . $i . ',' . sin($i) . ']'; if ($i != 49) echo ','; ?> ], var数据=[ ], 我试着用这个做了,但是对于这么简单的事情来说,它看起来很糟糕,很复杂 var data = [

我不熟悉.NETMVC和Razor引擎,但我已经使用PHP很长时间了。我试图在Razor中编写以下PHP代码:

var data = [
<?php for ($i = 0; $i < 50; ++$i) { 
  echo '[' . $i . ',' . sin($i) . ']';
  if ($i != 49)
    echo ',';
?>
],
var数据=[
],
我试着用这个做了,但是对于这么简单的事情来说,它看起来很糟糕,很复杂

var data = [
  @for(int i = 0; i < 50; ++i) {  
<text>[</text>@i<text>,</text>@Math.Sin(i)<text>]</text>if (i != 49) {<text>,</text>}
  } 
];
var数据=[
@对于(int i=0;i<50;++i){
[i,@Math.Sin(i)]如果(i!=49{,}
} 
];
问题是
[
]
与Razor语法混淆,并给出语法错误,因此我不得不将它们包装在
标记上

有没有更简单/更好的方法?也许有点像PHP回声

谢谢。

用这个:

@String.Format("[{0},{1}]", i, Math.Sin(i))

对于逗号,您可以使用
String.Join()
创建数组()

使用视图构造JSON对象并不是最好的方法。您可以使用本机JSON支持直接从控制器执行此操作,例如:

    public JsonResult SinArray()
    {
        return new JsonResult() { 
            Data = Enumerable.Range(0, 50).Select(i => new[] { i, Math.Sin(i) }), 
            JsonRequestBehavior = JsonRequestBehavior.AllowGet 
        };
    }
这是回报

[[0,0],[1,0.8414709848078965],[2,0.90929742682568171],.....,[49,-0.95375265275947185]]

作为奖励,您可以获得正确的内容类型。

MVC cshtml中与echo等价的gerenal可能是:
@Html.Raw(“SomeStringDirectlyInsideTheBrowserPageHTMLCode”)

这将在不需要对“”进行HTML编码的位置呈现(动态)字符串。例如
@Html.Raw(String.Format(“,myclass,mystyle))
工作正常

请注意,
@HTML.Raw(MyString)
呈现的HTML标记不能由编译器检查。我的意思是:@Html.Raw(“”)不能仅仅通过关闭,因为您将得到一个错误(编译器没有检测到),所以您必须用@Html.Raw(“”)关闭标记


注意:在某些情况下,这不起作用(例如在DevExpress中失败)-使用
ViewContext.Writer.Write()
ViewContext.Writer.WriteLine()

我知道的老问题,但另一种方法是使用纯文本语法
@:

var data = [
@for (int i = 0; i < 50; ++i)
{
    @:[@i,@Math.Sin(i)]
    @(i != 49 ? "," : "")
}
];
var数据=[
@对于(int i=0;i<50;++i)
{
@:[@i,@Math.Sin(i)]
@(i!=49?,“:”)
}
];

谢谢!这是一个非常好的解决方案。另一个变体是
@($“[{i},{Math.Sin(i)}])
谢谢,这将在不久的将来帮助我。只有一个问题,如何在不使用Ajax调用的情况下直接在视图上使用这个JsonResult?我的意思是:
var data=[@ViewBag.myJsonResult]不确定您的确切情况,但我可能会使用模型属性将其传递给视图。可以使用将对象序列化为JSON字符串。我通常会尽量避免将复杂对象传递给视图,因为这意味着视图中存在逻辑,当然也会调用Math。。视图中的逻辑被认为是一种罪恶这就是我试图做的
ViewBag.myJsonResult=newJavaScriptSerializer().Serialize(SinArray().Data)