簡體   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