Мне нужно заполнить элементы управления Html.EditorFor, когда я выбираю продукт из раскрывающегося списка. Я очень новичок в JQuery и Ajax.
Мое раскрывающееся меню:
@Html.DropDownList("ProductId", null, htmlAttributes: new { @class = "form-control",
@onchange= "FillPrice()", id= "ProductId" })
РедакторДля:
@Html.EditorFor(model => model.ProductPrice,
new { htmlAttributes = new {
@class = "form-control",
id="txtPrice" } })
JavaScript:
function FillPrice() {
var ProductId = $('#ProductId').val();
$.ajax({
url: '@Url.Action("GetPrice")',
dataType: "JSON",
data: { ProductId: ProductId },
contentType: "application/json; charset=utf-8",
success: function (price) {
$('#txtPrice').val() ??? What to write here to fill txtPrice?
}
});
}
Контроллер/Получить цену:
public JsonResult GetPrice(int ProductId)
{
var price = from r in db.Products
where r.Id == ProductId
select new {
id = r.Id,
label = r.ProductPrice,
value = r.ProductPrice };
return Json(price, JsonRequestBehavior.AllowGet);
}
До этого момента все работает. Я проверяю с помощью Firebug и вижу получение и результаты Json, но я не могу привязать значение к EditorFor.
$('#txtPrice').val(price.value)
- но почему вы возвращаете 2 свойства (label
иvalue
) с одинаковым значением? Вы также можете удалить опциюcontentType:
- person   schedule 30.09.2015success: function (price) { console.dir(price);
и посмотрите, какие свойства есть уprice
. - person freedomn-m   schedule 30.09.2015