作为测试我正在转换我们从Web Forms写到Razor的概念验证应用程序,只是为了我们可以评估它.
到目前为止,我遇到了一个问题,即让我头疼...生成客户端Javascript ...
<script type="text/javascript">
var jqGridIdList = "<%: Url.Action ("getidlist", "office", new { area = "reports" }) %>";
var availableIds = [];
<% for (var i = 0; i < Model.Data.Count (); i++) { %>
availableIds.push({ value : "<%: Model.Data.ElementAt (i).Text %>", label : "<%: Model.Data.ElementAt (i).Text %>" });
<% } %>
</script>
Run Code Online (Sandbox Code Playgroud)
<script type="text/javascript">
var jqGridIdList = "@Url.Action("getidlist", "office", new { area = "reports" })";
var availableIds = [];
@for(var i = 0; i < …Run Code Online (Sandbox Code Playgroud) 我有c#class say更像AjaxOptions的选项.
public class options
{
public string Url {get;set;}
public string httpMethod {get;set}
}
Run Code Online (Sandbox Code Playgroud)
和这样的javascript函数
function dosomething(obj)
{
if (obj.Url!="" and obj.HttpMethod=="something")
loadsomething();
}
Run Code Online (Sandbox Code Playgroud)
现在在我的Controller动作中
public class mycontroller : controller
{
public ActionResult WhatToDo()
{
options obj = new options{Url="someurl"};
return PartialView(obj);
}
}
Run Code Online (Sandbox Code Playgroud)
在我看来,我需要这个对象类型的字符串,我应该能够传递给我的方法.
@model options
<script>
dosomething(@model.SomeFunctionToConverToString())
</script>
Run Code Online (Sandbox Code Playgroud)
所以我需要这个SomeFunctionToConverToString方法,我将这个对象转换为字符串.
谢谢
Vs'12 asp.net C#MVC4 - Int.Appl.Template EF Code First
这是我的非常简单 Script
<script class="TractsScript">
$('#Add').click(function (e) {
var val = @ViewBag.ForSection;
alert(val);
});
</script>
Run Code Online (Sandbox Code Playgroud)
根据例子,我想简单地在我script或USE中设置变量a Viewbag.或Model.
我无法在以下任何论坛中找到答案:StckTrace1,StackTraceBetterAnswer
我试过的其他事情:
var model = @Html.Raw(Json.Encode(Model))
alert(model.Sections);
alert(@ViewBag.ForSection);
Run Code Online (Sandbox Code Playgroud) 我看过一些关于这个主题和一些博客的帖子,但似乎都没有提到我得到的输出.
我想要的是生成一个包含它的信息的谷歌地图.手动输入信息会产生正确的信息.这部分是有效的.
我遇到困难的地方是当我要动态地创建带有我想要的信息的字符串的javascript数组.
我想得到的HTML代码是:
<script type="text/javascript">
var projects = [
['Kantoor 4.1 bestaande bouw', 52.25446, 6.16024700000003, 'Deventer', '', 'adviseurs', 'rating30'],
['School nieuw 4.0', 52.243161, 4.43677860000003, 'Noordwijk', '', 'adviseurs', 'rating30'],
];
Run Code Online (Sandbox Code Playgroud)
非常简单的javascript数组,我想用它创建:
<script type="text/javascript">
var projects = [
@foreach (var item in Model)
{
@HttpUtility.JavaScriptStringEncode("['" + item.Gebouwnaam + "', " + item.LocatieLatitude.ToString().Replace(",", ".") + ", " + item.LocatieLongitude.ToString().Replace(",", ".") + ", '" + item.Plaats + "', '" + item.Gebruiksfunctie + "', '" + item.Licentiehouder + "', '" + item.rating + "'],"); …Run Code Online (Sandbox Code Playgroud) 我偶然发现了https://codereview.stackexchange.com/questions/10610/refactoring-javascript-into-pure-functions-to-make-code-more-readable-and-mainta,我不明白答案,因为用户以我以前从未见过的方式使用@符号.附加到if关键字时它会怎么做?你能把它附加到其他关键词吗?
可能重复:
在javascript中使用razor
我想在剃刀页面上放置模型中的siimple值,并将其用作javascript函数中的常量值.即
<script> var myValue = @Model.myRecord.Count();</script>
Run Code Online (Sandbox Code Playgroud)
所以myValue =我模型中的记录数.我使用myRecord.Count作为示例,它可以是我的模型中的任何值.
这可能吗?
TIA J
好的我偶然发现了以下解决方案:
<script> var myValue = @(Model.myRecord.Count())</script>
Run Code Online (Sandbox Code Playgroud)
只需添加额外的括号就可以了.
生成的错误是"条件编译已关闭".
来自MSDN的条件编译黑客很普遍但是失败了.
有几个像这样的问题: 在Razor中关闭了条件编译?
他们都指出了答案:
/*@cc_on @*/
Run Code Online (Sandbox Code Playgroud)
从MSDN上看到的文章:
http://msdn.microsoft.com/en-us/library/5y5529x3(v=vs.90).aspx
但是,这个hack很失败,或者我似乎无法实现它.尾随@*导致.cshtml文件中的剩余代码被注释掉.此外,@cc_on给出错误"cc_on在当前上下文中不存在".
这是在.cshtml文件中测试的一段代码:
<script type="text/javascript">
@for(int i = 0; i < 5; i++)
{
document.write(@i);
}
</script>
Run Code Online (Sandbox Code Playgroud)
这将导致"条件编译关闭"消息.试图在其中插入变通方法将导致来自for循环的上下文",","期望","或"期望;"或"预期""中存在各种其他消息,例如"cc_on".
如何在javascript脚本标记中使用剃刀for循环?
我在view.cshtml中有这些行:
$("document").ready(function(){
@{
var cx = Json.Encode(ViewBag.x);
var cy = Json.Encode(ViewBag.y);
}
var x = @cx;
var y = @cy;
});
Run Code Online (Sandbox Code Playgroud)
但现在;javascript代码下面有一条红线,错误是Syntax error.
问题是什么?
我有一个 C# 变量“值”,我想将它传递给 JavaScript Chartjs 数据对象。它呈现图表但不包括两个@p 值。请参阅下面的代码源:
.cshtml 文件:
@{
int p1 = 43;
int p2 = 45;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title></title>
</head>
<body>
<div style="width: 400px;">
<canvas id="lineChart" width="400" height="400"></canvas>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script>
<script src="main.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
javascript文件:
var chart = document.getElementById("lineChart");
var data = {
labels: [2012, 2013, 2014, 2015, 2016, 2017],
datasets: [
{
label: "My Chart Label",
fill: false,
lineTension: 0.1,
data: ['(@p1)', '(@p2)', 50, 48, 47, 52]
}
] …Run Code Online (Sandbox Code Playgroud) 如何在剃须刀foreach中构建我的html?我在foreach里面得到"无法解决tbody".
我的代码:
function loadNyhedsbrevTable() {
var tbody = "";
$('#NyhedsbrevTable tbody').empty();
@foreach (string n in ViewBag.NyhedsbrevListe)
{
tbody = '<tr><td>' + n + '</td></tr>';
}
$('#NyhedsbrevTable tbody').append(tbody);
}
Run Code Online (Sandbox Code Playgroud)
我需要这样的东西吗?
<not razor> tbody = '<tr><td>' + @n + <not razor>'</td></tr>';
我试图在 Razor 条件视图中包含一些 JS,但它一直试图将我的 JS 解释为 VB:
@If includeMoreJs Then
@<script type="text/javascript" src="/some-js-file.js"></script>
<script type="text/javascript" src="/some-other-js-file.js"></script>
<script type="text/javascript">
function someFunction(p) {
if (p) foo();
else bar();
}
</script>
End If
Run Code Online (Sandbox Code Playgroud)
我还尝试使用<text>psuedo 元素进行此操作,如下所述:Using Razor inside JavaScript
@If includeMoreJs Then
<text>
<script type="text/javascript" src="/some-js-file.js"></script>
<script type="text/javascript" src="/some-other-js-file.js"></script>
<script type="text/javascript">
function someFunction(p) {
if (p) foo();
else bar();
}
</script>
</text>
End If
Run Code Online (Sandbox Code Playgroud)
但仍然没有运气......我怎样才能让VB独立于我的JS?
我想使用一个javascript变量作为参数传递给我在C#中的类构造函数.
如何将jaascript变量ID转换为C#,以便我能够在User.IsOnLeave上传递值?
<script type="text/javascript">
var ID;
var dateToEvaluate;
function convertVariable()
{
*if (User.IsOnLeave(***ID***, dateToEvaluate))
{
}*
}
</script>
Run Code Online (Sandbox Code Playgroud) javascript ×10
razor ×8
asp.net-mvc ×5
c# ×4
charts ×1
escaping ×1
html ×1
jquery ×1
object ×1
vb.net ×1