我需要將用戶上傳的CSV數據導入數據庫。 步驟 - 1.用戶上傳數據到MVC視圖 2.在視圖中顯示所有上傳的數據 3.用戶可以根據導入的值選擇列名稱 3.根據用戶選擇的記錄導入數據。將上傳的數據顯示到MVC視圖並將選定的記錄導入數據庫
要實現這一點,我在下面模型創建 -
public class ImportCSVData
{
public IEnumerable<System.Web.Mvc.SelectListItem> Names { get; set;} // This is to display dynamic column
public HttpPostedFileBase File { get; set; }
public DataTable Data { get; set; }
}
在控制器中,我解析上傳的文件(示例代碼)
public ActionResult ImportCSVCustomer()
{
ImportCSVData model = new ImportCSVData();
HttpPostedFileBase upfile = Request.Files["File"];
model.File = upfile;
var dt = ParseCSVData(model);
if (dt != null && dt.Rows.Count > 0)
{
var dcRec = new DataColumn("ShouldImport", typeof(bool));
dcRec.DefaultValue = false;
dt.Columns.Add(dcRec);
model.Data = dt;
List<SelectListItem> Names = getColumnNames();
model.Names = Names;
return PartialView("_ImportedCSVCustomer", model);
}
return View();
}
樣品認爲我設計 -
@for (int i = 0; i < Model.Data.Rows.Count; i++)
{
<tr>
<td data-val="@i">
<input type="checkbox" name="sid" [email protected][i][Model.Data.Columns.Count - 1] class="sid">
</td>
@for (int j = 0; j < Model.Data.Columns.Count - 1; j++)
{
<td>
@Model.Data.Rows[i][j].ToString()
@Html.HiddenFor(Model.Data.Rows[i][j].ToString())
</td>
}
</tr>
}
我正在處理視圖來顯示,但發佈後無法獲取模型值從視圖到控制器。 任何想法如何實現這個?
你的代碼沒有任何意義。這是一種GET或POST方法嗎?而且你不使用'DataTable'(你不能發表)。您需要一個包含屬性的視圖模型來顯示/提交您的數據 –
設計模型的最佳選擇是什麼,這些屬性的行爲與數據表類似?因爲我的列和行都可以是動態的。 – user1841927