无法使用Asp.net Mvc Json在“下拉菜单”上加载数据

时间:2019-07-04 17:00:41

标签: asp.net-mvc

当我要加载类别数据时,我正在使用Asp.net Mvc Json创建一个简单的库存控制系统。类别数据未加载到下拉菜单中。到目前为止,我尝试过的代码和屏幕快照图像都附在下面。 enter image description here

表单设计

<div class="card-action">
    <div class="form-group">
        <label class="form-label">Category</label>
        <select class="form-control" id="category" name="category"
                            placeholder="Category" required>
            <option value="">Please Select</option>
        </select>
    </div>
    </div>

jQuery

getCategory();

function getCategory() {
    $.ajax({
        type: 'GET',
        url: '/product/Getcategory',
        dataType: 'JSON',
        success: function (data) {

            console.log(data);
            for (var i = 0; i < data.length; i++) {
                $('#category').append($("<option/>", {
                    value: data[i].id,
                    text: data[i].cat_name,
                }));
            }

        },
        error: function (xhr, status, error) {
            alert(xhr.responseText);

        }

    });  
}

控制器

public class ProductController : Controller
{

    aspoEntities db = new aspoEntities();
    // GET: /Product/
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult Getcategory()
    {
        using (aspoEntities db = new aspoEntities())
        {
            var category = db.categories.ToList();
            return Json(new { data = category }, JsonRequestBehavior.AllowGet);
        }
    }

}

2 个答案:

答案 0 :(得分:0)

似乎您的db上下文已在json序列化之前被清除。

尝试将db上下文注入控制器,并摆脱using语句。

或者将return语句移到using块之外。

答案 1 :(得分:0)

将控制器更改为

public class ProductController : Controller
{
    // GET: /Product/
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult Getcategory()
    {
        aspoEntities db = new aspoEntities()
        var category = db.categories.ToList();

        return Json(category, JsonRequestBehavior.AllowGet);
    }

}