【问题标题】:Passing data from jQueryUI dialog form to controller将数据从 jQueryUI 对话框表单传递到控制器
【发布时间】:2017-08-21 08:36:18
【问题描述】:

我是 ASP.NET/Javascript 新手,在使用 jQueryUI 对话框表单实现简单的 CRUD 操作时遇到了一些麻烦。这是我的代码:

<button class="update" id="@Model.id">Update</button>
<div id="dialog-form" title="Update">
  <form>
    <fieldset>
      <input type="text" name="state" id="state">
      <input type="text" name="note" id="note">
      <input type="submit">
    </fieldset>
  </form>
</div>

<script>
      $(function() {
          var dialog,
            state = $("#state"),
            note = $("#note"),
            id = this.id, //??
            dialog = $("#dialog-form").dialog({
              autoOpen: false,
              height: 400,
              width: 350,
              modal: true,
              buttons: {
                "Ok": function() {
                  $.ajax({
                    type: "POST",
                    url: "@Url.Action("Update","Ticket")",
                    data: {
                      id: id,
                      state: state,
                      note: note
                    },
                    cache: false,
                    dataType: "json",
                    success: function(data) {
                      $("#dialog").dialog("close");
                    }
                  });
                },
                "Cancel": function() {
                  $(this).dialog("close");
                }
              }
            });

          $(".update").button().on("click", function() {
            dialog.dialog("open");
          });
        });
</script>    

最后是TicketController 中的Update 操作:

  public ActionResult Update(String id, String state, String note)
    {
        //do some stuff
    }

但是什么也没发生,也没有进入行动。非常感谢任何帮助

【问题讨论】:

  • 什么也没发生是什么意思?尝试运行您的调试器,看看您是否进入了更新操作,或者将error 添加到您的ajax
  • 您期望发生什么?操作为空
  • 您的表单不包含id 的任何表单控件您希望将什么传递给该参数?
  • 此外,您还没有显示该方法返回的内容 - 它是否返回 JsonResult(您已指定 dataType: "json",)。还有你想对返回的数据做什么——你success回调不使用数据

标签: javascript jquery asp.net asp.net-mvc jquery-ui


【解决方案1】:

如下更改您的data,您需要使用.val() 传递值而不是对象

state = $("#state").val(),
note = $("#note").val(),
id = "Pass anything you wants"

data: { 'id':id,'state':state,'note':note },

[HttpPost]装饰你的动作方法

[HttpPost]
public ActionResult Update(String id, String state, String note)
{
}

【讨论】:

  • 我提出了一个新问题 (stackoverflow.com/questions/43071012/…)。你的答案就是这个问题的答案:)
  • 哎呀,我迟到了,顺便说一句,你没有得到答案吗?
  • 是的! (#random 单词填充空格)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-11
  • 2023-03-14
  • 1970-01-01
相关资源
最近更新 更多