Asp.net mvc .net Razor替代PHP echo
我不熟悉.NETMVC和Razor引擎,但我已经使用PHP很长时间了。我试图在Razor中编写以下PHP代码: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 = [
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)代码>