我在webmatrix中使用razor,我遇到字符串特殊字符的问题。我想在javascript中将一个字符串放入一个varibale但是当我尝试使用标签@时它显示了一个问题 这是代码:
<script>
$Edit.click(function() {
var userid = $(this).closest('td').prev('td').text();
var stringDiv = "@{ var selectQueryString4 = SELECT * FROM DemandeConge where UserId = '\"+ trim(userid) + \"'\"+\";<h3>modifier la demande de congé de \" + userid + \"</h3>foreach(var row in db.Query(selectQueryString4)){<form action='responsable.cshtml' method=\"post\"><label for=\"txtDebut\">Date début :</label><input type=\"text\" id=\"txtDebut\" value=\"+ @row.DateDebutDemande +\"/></br><label for=\"txtFin\">Date de fin :</label><input type=\"text\" id=\"txtFin\" value=\"+ @row.DateFinDemande +\"/></br> <label for=\"txtTypeCong\">Type de congé :</label><input type=\"text\" id=\"txtTypeCong\" value=\"+ @row.TypeConge +\"/><input type=\"hidden\" name=\"UserId\" value=\"+ @row.UserId +\" /><input type=\"hidden\" name=\"type\" value=\"edite\" /><input type=\"submit\" value=\"Oui\" /> <input type=\"button\" value=\"No\" onclick=\"$('#edite').slideUp(); document.getElementById('edite').innerHTML = ' '\" /> </form>}}}");
document.getElementById('edite').innerHTML = stringDiv ;
$('#edite').slideDown(1000);
)
</script>
所以我想知道是否有办法解决这个问题。
答案 0 :(得分:2)
使用double @ like @@而不是@
答案 1 :(得分:0)
根据您的错误,您必须使用&#39; &#39; (简单的引号)在某处,它由剃刀引擎编译。 试着改变你所有的&#39;在\&#34;在你的&#34;&#34;字符串。
尝试自己,如果你声明一个这样的字符串&#39; aa&#39;你会在Csharp中得到同样的错误,因为你必须使用&#34; aa&#34;声明一个字符串文字。 &#39;&#39;是为了字符文字。
无论如何,在我看来你不应该混合使用j和C#。如果需要将变量从C#传递给Js,请使用ajax或其他解决方案,如隐藏输入字段。或者创建这样的模板:
<script type='text/template' id='mytemplate'>
<div>@myVar</div>
</script>
并使用
获取模板的内容$templateContent= $("#mytemplate").html()