0

我正在开发 MVC 应用程序,我想在其中将变量传递给该视图本身中的 JScript。怎么做?

我想将 AccessMode 的值发送到 Javascript。
我已经声明了该变量,但不知道如何在 JScript 中使用它。

<script src="@Url.Content("~/Scripts/jquery-1.8.0.min.js")" type="text/javascript"></script>

@model CRMEntities.Settings




@{
    ViewBag.Title = "CustomSettings3";
    //Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>CustomSettings3</h2>
<!DOCTYPE html>

<html>
<head>
    <title>CustomSettings3</title>
</head>
<body>

       @{string AccessMode; }
     @{string Ratings; }


       <div class="editor-label">
            @Html.LabelFor(model => model.AccessMode)
        </div>
        <div class="editor-field">
           @* @Html.EditorFor(model => model.AccessMode)*@
            @Html.DropDownList("AccessMode")
            @Html.ValidationMessageFor(model => model.AccessMode)
             //Assigning value.
            AccessMode = model.AccessMode
        </div>

         <div class="editor-field">

         @Html.DropDownList("RatingsCount")
        @Html.ValidationMessageFor(model => model.RatingsCount)
         @{
             Ratings = Html.DropDownList("RatingsCount");
        }
    </div>


        <p>
            <input type="button" value="Save" class="SaveSettings"/>       

        </p>

</body>
</html>




  <script type="text/javascript">

$(document).ready( function(){

    $('.SaveSettings').click(function ()
    {


           $.ajax
            ({

            type: 'post',
            url: '@Url.Content("~/Settings/SaveBasicSettings")',
            dataType: 'json',
            data:
            { 'AccessMode': "@AccessMode" },
            success: function (data) 
            {


            }

            });


       });

  });

</script>

在此处输入图像描述

4

2 回答 2

3

鉴于这AccessMode只是在您的视图中定义的字符串变量,并且您的 JS 嵌入在同一个视图中,您可以简单地将变量的值以标准方式写入您的 JS:

{ 'AccessMode': "@AccessMode" },

将 JS 移动到单独的文件(如果您选择这样做)后,您可以执行此操作的另一种方法是将 AccessModel 值存储为编辑器字段上的数据属性。

这样,您的 javascript 就可以像处理页面上的任何其他属性一样简单地提取它。

更新:

您分配值的方式也需要调整:

@{
AccessMode = Model.AccessMode
}
于 2012-10-19T12:15:17.293 回答
0

如果您的值设置正确,则可以将其存储在隐藏变量中并在 javascript 中读取

在视图中

<div class="editor-label">
            @Html.LabelFor(model => model.AccessMode)
        </div>
        <div class="editor-field">
           @* @Html.EditorFor(model => model.AccessMode)*@
            @Html.DropDownList("AccessMode")
            @Html.ValidationMessageFor(model => model.AccessMode)
             //Assigning value.
            AccessMode = model.AccessMode

           @Html.Hidden("modelValue", AccessMode)  //set value in hidden variable 
        </div>

在 JavaScript 中

<script type="text/javascript">
    $(document).ready(function () {

        $('.SaveSettings').click(function () {
            var modelValue = $("#modelValue").val();
            $.ajax
            ({

                type: 'post',
                url: '@Url.Content("~/Settings/SaveBasicSettings")',
                dataType: 'json',
                data: { 'AccessMode': modelValue },
                success: function (data) {


                }

            });


        });

    });

</script>

注意:检查 Hidden 变量的 model.AccessMode 中的值是否设置正确。

于 2012-10-19T12:55:31.863 回答