【问题标题】:Getting a local variable value using jQuery使用 jQuery 获取局部变量值
【发布时间】:2012-07-17 00:15:42
【问题描述】:

在尝试使用 jQuery 获取视图上的局部 int 变量的值时,我遇到了一个小问题。所以,我有一个主视图,正如您在下面的代码中看到的那样,当我尝试通过处理部分视图中按钮的单击事件来获取 indexPage 的值时,我使用了一个名为“_Result”的部分视图,如果我用另一个值(例如 5)初始化我的变量,我得到 0,事件。知道为什么吗?

提前致谢

我的看法:

@model System.Data.DataTable

@{var pageIndex = 5;}

<div>
    <div>
        <span>Téléphone ?</span>
        <input id="idTxTel" type="text" name="txTelephone"/>

        <input id="idBnSearch" type="submit" value="Chercher" name="bnSearch"/>
    </div>

    @Html.Partial("_Result", Model)
</div>

<script type="text/javascript">
    $(document).ready(function () {
        $("#idBnSearch").click(function () {
            //The right value (5)
            alert('@pageIndex');

            var telValue = $("#idTxTel").val();
            var methodUrl = '@Url.Content("~/Search/GetReverseResult/")';

            '@{pageIndex = 0;}'
            doReverseSearch(telValue, '@pageIndex', methodUrl);
        });

        $("#bnNextPage").live("click", function () 
        {
            //Not th right value (0)
            alert('@pageIndex');
        });
    });
</script>

我的 doReverseSearch 方法:

function doReverseSearch(telValue, pageIdx, methodUrl) 
    {
        $.ajax(
            {
                url: methodUrl,
                type: 'post',
                data: JSON.stringify({ Telephone: telValue, pageIndex: pageIdx }),
                datatype: 'json',
                contentType: 'application/json; charset=utf-8',
                success: function (data) {
                    $('#result').replaceWith(data);
                },
                error: function (request, status, err) {
                    alert(status);
                    alert(err);
                }
            });
    }

我的部分观点:

<div id="result">
    <h2>Résultat de la recherche</h2>
    <div>@ViewBag.CountResult entreprises trouvées</div>

    @if(Model != null)
    {
        foreach (DataRow row in Model.Rows)
        {
            <h3>@row["CompanyName"]</h3>
        }
    }

    <hr />
    <div>
        <span>Page N sur M</span>
         <input id="bnPreviousPage" type="submit" value="Précédant" name="bnPrevious"/>
         <input id="bnNextPage" type="submit" value="Suivant" name="bnNext"/>
    </div>
</div>

【问题讨论】:

  • 你的javascript是什么样子的?
  • 查看源代码时,每个alert('@pageIndex'); 看到了什么?我看不出这会出错,因为您正在为视图(而不是部分视图)生成一个值。如果点击事件没有为使用live 完成的事件触发,那将是另一回事......
  • 我不明白,但由于它没有给出正确的值,这意味着某个地方有问题! #idBnSearch 中的警报给我 5,#bnNextPage 中的警报给我 0
  • @Jason : 我的js代码贴出来了
  • 你的代码在渲染后是什么样子的?在浏览器中,查看源代码以查看 razor 实际为您做了什么。

标签: c# jquery asp.net-mvc-3 razor


【解决方案1】:

JavaScript 中的 Razor 必须封装在一个块中

所以你可以这样做:

<script>
// global value for page
<text>
var myPage = @pageIndex;
<text>
</script>

更简单的方法是给按钮一个数据页的属性,并在点击事件中请求属性:

<button data-page="@("pageIndex")" id="myButt" />

$("#myButt").on("click",function(e){
  var pageIndex = $(this).attr("data-page");
  alert(pageIndex);
});

【讨论】:

  • 感谢您的回复,关于您的第二次分段,NextButton 位于部分视图中,因此我无法为其提供具有 @pageIndex 值的属性..
  • 当你说:“Razor inside javascript has to be Wrap in a block”然后给我上面的例子时,我想我不太理解你,你能解释一下吗?跨度>
  • 你可以传递一个字符串或者一个int给partial,不管是partial,它仍然可以接受模型内容,因此它可以接受你的Int pageIndex作为脚本,关于这个主题有很多帖子,试试这个:stackoverflow.com/questions/4045308/razor-syntax-and-javascript/… 但我会使用模型,如果您正在工作和构建 MVC 站点,您将模型传递到您的页面,也将它传递到您的部分!! :-)
  • pageINdex 是从哪里来的,通常它是 Model.pageIndex 但你刚才说 pageIndex,是你模型中的 pageINdex,使用一个名为 pageIndex 的具有 int 属性的基本模型,这样你就可以拥有我不明白 Model.pageIndex 是不是你真的从
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-23
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多