我有一个申请,涉及“教堂的房屋捐赠”。我希望这样,当有捐款捐赠给教堂时,有人会在文本框中输入地址,但由于会有很多房屋,我希望有一个自动填写框,以便于填写。
这是我的模型:
public class Donation
{
[Key]
public int DonationId { get; set; }
public string TypeOfDonation { get; set; }
public decimal Amount { get; set; }
[ForeignKey("Church")]
public int ChurchId { get; set; }
[ForeignKey("House")]
public int HouseId{ get; set; }
public virtual Church Church { get; set; }
public virtual House House { get; set; }
}
public class House
{
[Key]
public int HouseNumber { get; set; }
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
public string AddressLine3 { get; set; }
}
我想我的控制器方法做错了:
public JsonResult GetAddress(string term)
{
var items = db.Houses
.Where(x => x.AddressLine1.Contains(term))
.Select(x => new { Label = x.HouseNumber, Value = x.AddressLine1 })
.Take(10);
return Json(items, JsonRequestBehavior.AllowGet);
}
还是我的jQuery:
<div class="form-group">
@Html.LabelFor(model => model.House.HouseNumber, "Address", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.House.HouseNumber, new { id = "HouseNumber" })
@Html.ValidationMessageFor(model => model.House.HouseNumber, "", new { @class = "text-danger" })
</div>
</div>
$('#Address').autocomplete({
source: function(request, response) {
$.get('@Url.Action("GetAddress", "DonationsController")',
{ term: request.term },
function(data) {
response($.map(data, function (item) {
return {
label: item.Label,
value: item.Value
}
}));
});
},
minLength: 2
})
谁能指出我正确的方向?
编辑:
最佳答案
您的屏幕截图显示了问题。
在MVC中创建URL时,即使控制器类称为DonationsController
,也不应包含单词“ Controller”。
更改为
$.get('@Url.Action("GetAddress", "Donations")',