[英]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.