[英]How to pass parameters to referenced javascript file from razor view
如果我在我的剃須刀中有這樣的javascript
:
@{
Grid grid = @Model.GetGridFromModel();
Bool isSomething = @Model.GetSomething();
Bool isSomethingMore = @Model.GetSomehtingMore();
Bool isSomethingElse = @Model.GetSomethingElse()
int caseCount = 0;
}
$(document).ready(function () {
$("#tabs").tabs({
show: function (event, ui) {
switch (ui.index) {
@if (isSomething){
<text>
case @caseCount:
change('@grid.Avalue');
break;
</text>
caseCount++;
}
@if(isSomethingElse){
<text>
case @caseCount:
change('@grid.Bvalue');
break;
</text>
caseCount++;
}
@if (isSomethingElseMore){
<text>
case @caseCount:
change('@grid.Cvalue');
break;
</text>
}
}
}
});
funciton change(id)
{
//doing somehting;
}
所以我想把這個javascript放在單獨的文件中並將該文件引用到我的視圖中,問題是當我在單獨的文件中javascript時,如何將值從razor傳遞給javascript?
Javascript是沒有被編譯器解析的文件,所以,你沒有機會......
但是你可以做的是使用動態javascript,例如:
<script src="/CustomScripts/scripts.js"><script>
有一條說:
routes.MapRoute(
"CustomScripts", "CustomScripts/{id}",
new { controller = "Scripts", action = "GetFile" }
);
創建你的控制器並使用一個簡單的return View();
喜歡
public ActionResult GetFile(string id)
{
// use id as you please
// pass any Model you want
return View();
}
在該視圖中,只需將您的JavaScript與Razor語法一起使用即可 。
或者你可以使用變量並加載它們使用RenderSection()
在你的_Layout.cshtml
文件中,在任何其他javascript之前在<head>
添加一個部分
<head>
<meta charset="utf-8" />
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
@RenderSection("script_variables", false)
<script src="@Url.Content("~/Scripts/jquery-1.6.2.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/modernizr-2.0.6-development-only.js")" type="text/javascript"></script>
</head>
並且在任何View
中你想要添加這些變量,只需:
@Section script_variables {
<script type="text/javascript">
var variableA = '@MyVarA',
variableB = '@MyVarB',
variableC = '@MyVarC';
</script>
}
加載腳本的所有其他文件都將包含此類代碼...
您可以在頁面上聲明一些js變量,然后使用.js文件中的那些變量
您可以在.js文件中調用函數並將數據作為參數發送
(請考慮創建一個對象並填充數據,而不是創建多個變量。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.