0

我对asp.net 和MVC 很陌生。

我试图使用 json 请求并填充一些文本框。

但我注意到当我使用 json 时,我无法访问视图中其他文本框的值。例如

string s2 = Request.Form["selectedTestCategory"];

当我调试时会生成 s2 = null。但是如果我在页面上放了一个提交按钮,则该值不为空。(到目前为止,我知道我只能将一个参数传递给控制器​​中的 JSON 方法)

我的问题是当我开始一个 json 请求时会发生什么?以及为什么我无法从 Request.Form[...]

谢谢,

更新:

这是我的 json

<script>
$(document).ready(function() {
    $('select#testStationUniqueId').change(function() {
        var testStation = $(this).val();
        $.ajaxSetup({ cache: false });



        $.ajax({
            url: "TestInput/getTestStationInformation/" + testStation,

            type: 'post',
            success: function(data) {
                $('#driveDetailDiv').empty();
                for (var i = 0; i < data.length; i++) {
                    $.post('TestInput/Details/', { id: data[i] }, function(data2) {
                        $('#driveDetailDiv').append(data2);
                    });
                }
            }
        });
    });
});

这是在我的控制器中

public PartialViewResult Details(string id)
    {
        //DriveDetails t = new DriveDetails(id);
        //return PartialView("DriveDetailsPartial", t);

        test_instance_input_model ti = new test_instance_input_model();
        string s2 = Request.Form["selectedTestCategory"];
        repository.setTestInstanceAttributes(ti, id);

        return PartialView("TestInstancePartial", ti);
    }

s2 在详细信息中为空,但如果我使用提交按钮,它将具有正确的值。

所以我试图弄清楚为什么当我发送一个json请求时它是空的。

4

1 回答 1

1

在您的 JavaScript 中,您不包括 jQuery ajax 请求中的任何数据(请参阅jQuery ajax)。因此 jQuery 没有添加任何请求参数。您需要包含一个数据对象,jQuery 会将其转换为参数,即数据对象中的属性越多,请求中的参数就越多。

$.ajax({
    url: '',
    data: { selectedTestCategory: 'category' },
    dataType: 'post',
    success: function() {}
});

此外,在您的控制器中,您可以快捷方式访问请求参数。

string s2 = Request["selectedTestCategory"];
于 2012-11-14T03:24:14.547 回答