【问题标题】:Passing selected text of dropdownlist through json通过json传递下拉列表的选定文本
【发布时间】:2014-04-24 10:31:48
【问题描述】:

我想从控制器方法的下拉列表中获取所选选项的文本。 但是使用下面的代码,我只得到初始文本而不是更改后的文本。

data.submit 之前的data.jsonOfLog 获取更改后的文本,但传递给控制器​​的不是此文本。

在控制器中:

[HttpPost]
public JsonResult GoodSave(string jsonOfLog)
{

在视图中:

<script type="text/javascript">
        $(function () {                 
            json = { jsonOfLog: $("#ddlDocumentType option:selected").text() };
            $('#fileupload').fileupload({
                dataType: 'json',
                contentType: 'application/json; charset=utf-8',
                url: '/Home/GoodSave',
                data: JSON.stringify(json),
                add: function (e, data) {
                    $('#fileuploadbutton').click(function () { 
                        data.jsonOfLog = $("#ddlDocumentType option:selected").text();
                        data.submit();
                    })
                }                
            });
        });
    </script>

【问题讨论】:

  • 使用$("#ddlDocumentType").val()
  • @Satpal - 他想要的是文本,而不是值。
  • @Archer,阅读标题Passing selected value of dropdownlist through json
  • @Satpal,阅读代码.text()。你应该问一个问题,而不是告诉他们可能有问题的事情。

标签: jquery asp.net-mvc json drop-down-menu controller


【解决方案1】:

这将在您尝试上传时更改 formData...

<script type="text/javascript">
    $(function () {                 
        $('#fileupload').fileupload({
            contentType: 'application/json; charset=utf-8',
            url: '/Home/GoodSave'
        })
        .on("fileuploadsubmit", function (e, data) {
            data.formData = {
                jsonOfLog: $("#ddlDocumentType option:selected").text()
            };
        });

        $("#fileuploadbutton").on("click", function() {
            $("#fileupload").submit();
        });
    });
</script>

我认为您不需要对数据进行字符串化,因此请尝试上述方法,如果这不起作用,请像以前一样使用字符串化。不需要它,因为您传递的数据的属性名称应与服务器方法中的参数匹配。

这来自blueimp文件上传文档...

https://github.com/blueimp/jQuery-File-Upload/wiki/How-to-submit-additional-form-data

【讨论】:

  • 感谢您的快速回复!我希望在单击“上传”按钮时调用控制器方法。根据您建议的更改,将在单击“选择文件”按钮时调用它。
  • 好的 - 我会修改。
  • 此外,data.submit 之前的 data.jsonOfLog 会获取更改后的文本,但传递给控制器​​的不是此文本。控制器方法获取下拉列表的初始文本。
  • 试试看。您正在传递data,但根据文件上传插件的文档,您应该使用formData。我以前只用它来上传文件,所以不能太确定是否要添加表单数据,但这似乎是你需要做的。
  • 但是该脚本中指定的#fileuploadbutton 的点击事件在哪里?
【解决方案2】:

最后,起作用的是:

<script type="text/javascript">
    $(function () {
        $('#fileupload').fileupload({
            add: function (e, data) {
                $('#fileuploadbutton').click(function () {
                    $.ajax({
                        type: 'POST',
                        cache: true,
                        url: '/Home/GoodSave',
                        data: { jsonOfLog: $("#ddlDocumentType option:selected").text() },
                        success: function (data) {

                        },
                        error: function (data) {
                            alert("error");
                        }
                    });
                });
            }    
        });    
    });    
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    相关资源
    最近更新 更多