繁体   English   中英

如何在几个数据库表中提取数据以自动为ASP.NET MVC 5应用程序中的用户输入数据?

[英]How could I pull data from several db tables to automate data entry for user in ASP.NET MVC 5 application?

我的ASP.NET MVC 5应用程序中有一个表单,该表单由存储在数据库中的几个不同实体组成。 我正在尝试进行设置,以便当用户键入特定实体的名称(例如Shipper )时,与该实体相关的表单中的字段(例如Shipper部分中的字段)会自动填充与该Shipper's数据。 这是我尝试过的:

我编写了一个类来连接到数据库,该数据库返回Shipper数据的dataset

public class DbConnection
    {
        private string _connectionString = "the connection string";

        public DbConnection()
        {

        }

        public DataSet GetShipperData()
        {
            DataSet shipperData = new DataSet();
            try
            { 
                //TODO: replace command with stored procedure name
                using(SqlConnection dbConn = new SqlConnection(_connectionString))
                {
                    using (SqlDataAdapter sda = new SqlDataAdapter("select * from dbo.shipper", dbConn))
                    {
                        sda.Fill(shipperData);
                    }
                }

                return shipperData;

            }
            catch
            {
                return null;
            }

        }
    }
}

这是我编写的用于在窗体的控制器中获取shipper dataset的方法:

public string[] GetShipperData()
        {
            DbConnection conn = new DbConnection();
            var shipperData = conn.GetShipperData();
            List<Shipper> listOfShipperData = shipperData.Tables[0].AsEnumerable().Select(datarow => new Shipper { Name = datarow.Field<string>("Name") }).ToList();
            return listOfShipperData;
        }

最后,这是表单所在视图中的javascript代码。 我正在使用jQuery在控制器中调用GetShipperData方法。 为了简洁起见,我省略了标记:

 $("#theShipperField").blur(function () {
        $.get('@Url.Action("GetShipperData")', function (data) {
            var shipperFields = document.getElementsByClassName('form-control shipper');
            $(shipperFields).attr("value", data);
        });
    });

我得到的第一个错误是:在“ Shipper字段中,得到的不是我想要的数据: System.Collections.Generic.List1[appname.Models.Shipper] 我认为这是因为javascript显然无法处理shipper数据,因此我需要采用字符串形式。 我不确定如何执行此操作。 我愿意以完全不同的方式进行此操作,因此,我们将不胜感激。 请让我知道是否可以提供其他信息。

首先:尝试使用Entity Framework将db模型放入Entity Framework中,然后创建Web API

    [System.Web.Http.Route("api/GetShippers")]
    [System.Web.Http.HttpGet]
    public IEnumerable<Shipper> GetShippers()
    {
        var shippers= unitOfWork.GetShippers();
        return shippers;
    }

之后,在您的js代码中

dataservice.js

var dataService = new function () {    
getShippers = function (callback) {
    $.getJSON(window.applicationBaseUrl + 'api/GetShippers', function (data) 
    {
        callback(data);
    });
    };
}

index.cshtml

@section scripts{ 
 <script type="text/javascript">
     $(document)
        .ready(function() {
            dataService.getShippers(DoSomething);}

      function DoSomething(shippersData) {console.log(shippersData);}

 </script>
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM