【问题标题】:Returning specific values with Jquery-Ajax request使用 Jquery-Ajax 请求返回特定值
【发布时间】:2013-01-24 15:48:04
【问题描述】:

我正在开发一个带有 knockout.js 的网络表单。有一次,我根据select 列表中的选定值得到一个值。我在 viewModel 中有以下代码:

        self.discoveryForms = ko.observableArray([]);
        self.selectedTemplate = ko.observable();
        self.selectedDiscoveryForm = ko.observable();

        //behaviors
        self.selectedTemplate.subscribe(function (newValue) {
            console.log(newValue.DiscoveryFormID());

            self.GetDiscoveryForms(newValue.DiscoveryFormID());
        });

        self.GetDiscoveryForms = function (discoveryFormID) {
            console.log(discoveryFormID);
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                data: "{ID: '" + discoveryFormID + "'}",
                url: ("Default.aspx/GetDiscoveryForms"),
                dataType: "json",                    
                success: function (response) { self.FindDiscoveryForms(response), console.log(response)}
                });
        }

        self.FindDiscoveryForms = function (response) {
            ko.mapping.fromJS(response.d, null, viewModel.discoveryForms);
            ko.applyBindings(viewModel);
        }

从实体中获取数据的c#是这样的:

    [WebMethod]
public static List<DiscoveryForm> GetDiscoveryForms(){
    List<DiscoveryForm> discoveryForms = new List<DiscoveryForm>();

    using (IntranetContainer db = new IntranetContainer())
    {
        discoveryForms = db.DiscoveryForms.Select(x => new DiscoveryForm()
        {
            ID = x.ID,
            Name = x.Name,
            Welcome = x.Welcome,
            WelcomeNote = x.WelcomeNote,
            WelcomeBack = x.WelcomeBack,
            WelcomeBackNote = x.WelcomeBackNote
        }).ToList();
    }

    return discoveryForms;
}

public class DiscoveryForm
{
    public long ID { get; set; }
    public string Name { get; set; }
    public string Welcome { get; set; }
    public string WelcomeNote { get; set; }
    public string WelcomeBack { get; set; }
    public string WelcomeBackNote { get; set; }
}

问题在于,虽然我希望 ajax 请求只返回由 selectedTemplate 选择的 ID 的发现表单,但它目前将所有值返回到数组中。我认为data: "{ID: '" + discoveryFormID + "'}", 会这样做。有人可以向我解释为什么会这样以及如何解决吗?我应该在 c# 方面做些什么吗?我是 javascript、ajax 和 knockout.js 的新手。

要纠正问题,查询必须如下所示:

   data: "{'id':"+discoveryFormID + "}",

并且根据下面的答案更改了c#方法。

【问题讨论】:

    标签: c# ajax jquery data-binding knockout.js


    【解决方案1】:

    您的服务必须看起来像

    public static List<DiscoveryForm> GetDiscoveryForms(int[] ids){
    

    然后这个参数必须用于查询。

    现在你没有任何东西可以缩小你的范围。

    【讨论】:

    • 酷。我怀疑是这样的。我仍在调整它,但这似乎让我朝着更好的方向前进。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 2020-04-23
    相关资源
    最近更新 更多