簡體   English   中英

如何從razor視圖將參數傳遞給引用的javascript文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM