Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery未设置隐藏值?_Javascript_Jquery_Asp.net Mvc - Fatal编程技术网

Javascript jQuery未设置隐藏值?

Javascript jQuery未设置隐藏值?,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,下面是一个例子,来自MVC中单页面的Pluralsight课程,讲师使用一个隐藏字段来保存页面所在的“模式”。当用户单击Add按钮时,它应该使用一些jQuery设置“EventCommand”。然而,我不能让我的设置 查看开发工具,我没有看到任何错误。当我在jQuery中设置一些警报时,它们会发出警报,因此我知道正在调用jQuery。当我查看页面源代码时,我可以看到一个名为“EventCommand”的输入字段。看起来应该正确设置,但没有设置隐藏字段 有人知道为什么这不起作用吗 显示属性的Vie

下面是一个例子,来自MVC中单页面的Pluralsight课程,讲师使用一个隐藏字段来保存页面所在的“模式”。当用户单击Add按钮时,它应该使用一些jQuery设置“EventCommand”。然而,我不能让我的设置

查看开发工具,我没有看到任何错误。当我在jQuery中设置一些警报时,它们会发出警报,因此我知道正在调用jQuery。当我查看页面源代码时,我可以看到一个名为“EventCommand”的输入字段。看起来应该正确设置,但没有设置隐藏字段

有人知道为什么这不起作用吗

显示属性的ViewModel以及HanndleRequest(),它查看EventCommand以决定要执行的操作,但单击add按钮时为NULL

  public string Mode { get; set; }
    public string EventCommand { get; set; }
    public string EventArgument { get; set; }

 public void HandleRequest()
        {
            switch (EventCommand.ToLower())
            {
                case "list":
                    GetCalls();
                    break;

                case "add":
                    Add();
                    break;

                case "edit":
                    IsValid = true;
                    Edit();
                    break;
            }
        }
具有HiddenFor和Add按钮的视图顶部

@using (Html.BeginForm())
{
     <!-- BEGIN HIDDEN FIELDS AREA -->
        @Html.HiddenFor(m => m.EventCommand)
        @Html.HiddenFor(m => m.Mode)
        @Html.HiddenFor(m => m.EventArgument)
      <!-- END HIDDEN FIELDS AREA -->

    <button id="btnAdd" class="btn btn-sm btn-success" data-cpp-action="add">
        <i class="glyphicon glyphicon-plus"></i> &nbsp;Create New
    </button>
@使用(Html.BeginForm())
{
@HiddenFor(m=>m.EventCommand)
@HiddenFor(m=>m.Mode)
@HiddenFor(m=>m.EventArgument)
创造新的
在视图底部的jQuery。我得到了一个警报,提示click事件发生了,但是带有数据cpp操作的警报显示undefined

@section scripts {

    <script>
        $(document).ready(function () {

      $("[data-cpp-action]").on("click", function (e) {
          e.preventDefault();

          alert("in click");
          alert("action: " + $(this).data("data-cpp-action"));

        $("#EventCommand").val(
          $(this).data("data-cpp-action"));

        $("#EventArgument").val(
          $(this).attr("data-cpp-val"));

        $("form").submit();
      });
    });
    </script>
}
@节脚本{
$(文档).ready(函数(){
$(“[数据cpp操作]”)。在(“单击”上,函数(e){
e、 预防默认值();
警报(“点击中”);
警报(“操作:+$(此).data(“数据cpp操作”);
$(“#EventCommand”).val(
$(此).data(“数据cpp操作”);
$(“#事件参数”).val(
$(this.attr(“数据cpp val”);
$(“表格”)。提交();
});
});
}
数据功能中不需要“数据”。仅使用“cpp操作”:


$(文档).ready(函数(){
$(“[数据cpp操作]”)。在(“单击”上,函数(e){
e、 预防默认值();
警报(“点击中”);
警报(“操作:+$(此).data(“cpp操作”);
$(“#EventCommand”).val($(this.data(“cpp操作”));
$(“#EventArgument”).val($(this.attr(“cpp val”));
$(“表格”)。提交();
});
});
另请参见jQuery文档:

更改

$(此).data(“数据cpp操作”)

为了

$(this.attr(“数据cpp操作”)


这就是为什么:

实际上这个答案和@CarlosFiguerao的答案都是有效的。但是,由于我正在处理的示例是使用数据而不是attr,所以我将坚持使用这个作为我的答案。删除“数据”——在jQuery中,这对我来说很有效。这也很有效,看看这个链接,我想我可以不用使用.attr,但是因为我正在使用的示例是使用.data而不是.attr,所以对于我的场景,我将坚持上面的答案。
<script>
    $(document).ready(function() {
        $("[data-cpp-action]").on("click", function(e) {
            e.preventDefault();

            alert("in click");
            alert("action: " + $(this).data("cpp-action"));

            $("#EventCommand").val($(this).data("cpp-action"));
            $("#EventArgument").val($(this).attr("cpp-val"));

            $("form").submit();
        });
    });
</script>