Jop*_*per 6 javascript asp.net-mvc-3
如果我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;
}
Run Code Online (Sandbox Code Playgroud)
所以我想把这个javascript放在单独的文件中并将该文件引用到我的视图中,问题是当我在单独的文件中javascript时,如何将值从razor传递给javascript?
Javascript是没有被编译器解析的文件,所以,你没有机会......
但是你可以做的是使用动态javascript,例如:
<script src="/CustomScripts/scripts.js"><script>
Run Code Online (Sandbox Code Playgroud)
有一条说:
routes.MapRoute(
"CustomScripts", "CustomScripts/{id}",
new { controller = "Scripts", action = "GetFile" }
);
Run Code Online (Sandbox Code Playgroud)
创建你的控制器并使用简单的return View();类似
public ActionResult GetFile(string id)
{
// use id as you please
// pass any Model you want
return View();
}
Run Code Online (Sandbox Code Playgroud)
在该视图中,只需将您的javascript与Razor语法一起使用即可.
或者你可以使用变量并加载它们来使用 RenderSection()
在你的_Layout.cshtml文件中添加你<head>之前的任何其他JavaScript的部分
<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>
Run Code Online (Sandbox Code Playgroud)
在任何View你想要添加这些变量的地方,只需:
@Section script_variables {
<script type="text/javascript">
var variableA = '@MyVarA',
variableB = '@MyVarB',
variableC = '@MyVarC';
</script>
}
Run Code Online (Sandbox Code Playgroud)
加载脚本的所有其他文件都将包含此类代码...
| 归档时间: |
|
| 查看次数: |
6485 次 |
| 最近记录: |