我有一个下拉列表,它使用ajax调用回发给JsonResult并填充表元素。当下拉列表中的值不返回任何记录时,javascript函数会返回一个警报,但是当返回记录时,它不会通过该函数。 这是我的下拉列表:
@Html.DropDownListFor(model => model.SelectedFiscalYear, Model.FiscalYears, new { onchange = "PopulateTransactions();" })
这是我的PopulateTransactions功能:
function PopulateTransactions() {
alert("OK");
var success = function (results) {
var tbl = $("#tblTransactions");
tbl.empty();
alert(results.length);
for (var i = 0; i < results.length; i++) {
tbl.append("<tr><td>" + "Hello" + "</td><td>" + "World" + "</td></tr>");
}
};
$.ajax({
url: '@Url.Action("GetTransactions", "ProjectProjet")',
type: "POST",
data: {
id: $("#ActivityId").val(),
year: $("#SelectedFiscalYear").val()
},
dataType: "json",
success: success
});
}
这是我的JsonResult:
public JsonResult GetTransactions(int id, int year)
{
List<Transaction> data;
data = new Transaction().GetTransactionsByActivityFiscalYear(id, year);
return Json(data.ToArray());
}
从我的数据库返回实体:
public List<Transaction> GetTransactionsByActivityFiscalYear(int id, int year)
{
using (MyEntities ctx = new MyEntities())
{
var query = ctx.Transactions.Where(a => a.ActivityId == id && a.ValueDate.Year == year).ToList();
return query;
}
}
从我的功能中可以看到,警报(“确定”)总是显示,但如果有结果,我的表格不会被填充,我也没有得到警报(results.length)。如果没有结果,那么我会收到两个警报。我的控制台在第一次加载时填充了我的表,但每次更改下拉列表值时都应该通过Javascript onchange事件填充。这是我的Html表:
<table id="tblTransactions">
@foreach (var tran in Model.TransactionsByFiscalYear)
{
<tr>
<td>
tran.ValueDate
</td>
<td>
tran.Value
</td>
</tr>
}
</table>
谁能看到我做错了什么? 感谢
答案 0 :(得分:0)
@lamelemon我明白了。我为我的交易创建了一个POCO类,并获取我的实体并填充此类。当我返回这个新课时,它工作正常。我猜实体框架序列化有问题。 感谢大家的帮助。