0
我正在使用knockout.js在webform上工作。有一次,我得到一个基于select
列表中所选值的值。我有视图模型中的以下代码:用jquery-Ajax请求返回特定值
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#方法是根据下面的答案改变。
很酷。我怀疑这是这方面的事情。我仍在调整它,但这似乎让我朝着更好的方向发展。 – ijb109 2013-02-08 20:13:59