C# 如何通过存储库和视图将控制器中的数据表绑定到模型?
我已经在一个项目上工作了几个月,似乎总是在绑定结果,这样我就可以将结果传递给一个视图,用户可以将结果绑定到一个模型。我创建了一个存储库,虽然我不确定它是否有效,但当我弄明白这一部分时,我会继续工作 嗯,我的问题是存储库列表,我不知道如何将csvData列添加到DCResultsRepository列表(即DCResults1)中,我知道这是我应该做的。 下面我写了第一个控制器的代码,问题出在这个区域:C# 如何通过存储库和视图将控制器中的数据表绑定到模型?,c#,asp.net-mvc,C#,Asp.net Mvc,我已经在一个项目上工作了几个月,似乎总是在绑定结果,这样我就可以将结果传递给一个视图,用户可以将结果绑定到一个模型。我创建了一个存储库,虽然我不确定它是否有效,但当我弄明白这一部分时,我会继续工作 嗯,我的问题是存储库列表,我不知道如何将csvData列添加到DCResultsRepository列表(即DCResults1)中,我知道这是我应该做的。 下面我写了第一个控制器的代码,问题出在这个区域: for(int y = 0; y <csvData.Columns.Count; y++
for(int y = 0; y <csvData.Columns.Count; y++)
{
string dc = csvData.Columns[y].ColumnName.ToString();
var repository = new DCResultsRepository {
SelectedDCResults= dc
};
List<string> DCList DCResultsRepos.DCResults1 = new List<string>();
var DC = DCResultsRepos.DCResults1(DCResultsRepos.SelectedDCResults.ToList());
}
DCResultsRepos.DCResults1.Contains(DCResultsRepos.SelectedDCResults);
for(int y=0;y 0)
{
尝试
{
使用(TextFieldParser csvReader=newtextfieldparser(file.InputStream))
{
SetDelimiters(新字符串[]{Delimiter});
csvReader.HasFieldsEnclosedInQuotes=Firstrow==“true”?true:false;
字符串[]colFields=csvReader.ReadFields();
foreach(colFields中的字符串列)
{
DataColumn DataColumn=新的DataColumn(列);
DataColumn.AllowDBNull=true;
csvData.Columns.Add(DataColumn);
}
而(!csvReader.EndOfData)
{
字符串[]fieldData=csvReader.ReadFields();
for(int i=0;i 对于(int y=0;y我认为问题的一部分是控制器似乎被不应该在控制器中的逻辑阻塞了。这使得读取自己的代码以及编写相同的基本操作变得更加困难,因为它包含了编写控制器方法时没有意义的所有类型的操作nciple指出,每个类都应该有一个单独的职责,并且该职责应该完全由类封装。它的所有服务都应该与该职责紧密结合。控制器的职责是在模型和视图之间进行调解,而不是解析文件中的数据
我建议您阅读的实现。一旦这些都准备好了,您甚至可以进一步阅读,其中数据通过(数据/查询)绑定到模型处理程序。这一切都是通过分离文件来完成的,这样您的控制器方法就干净了,并且可以执行它们应该执行的操作。我尝试在控制器中不使用这些方法,但代码在普通类上不起作用。我无法将csvData数据表中的行和列放在模型上,因为它在每个文件中都有自定义行帽子放在里面,所以如果可能的话,用户必须选择放在哪一个模型和哪一行。这两个解释性链接都想当然地认为我知道我试图绑定的文件中有哪些列,但我不能想当然地认为这是理所当然的,所以用户必须将模型绑定到列和行本身,然后我才能做更多的操作它。@E.A.O.S:这是一个实际的用例,还是由于不知道如何绑定到正确的模型而导致的,因此,这是用户的问题?这是一个实际的用例。用户应该以csv格式发布一个文件,并且该文件应该能够根据需要发布到数据库中的任何表中。需要它对用户来说是尽可能动态的。用户希望处理它的去向以及从文件中添加的确切信息,因此我必须创建视图,以便在根据他们的请求将其添加到数据库之前,他们可以从这些选项中进行选择。因此,模型和存储库需要反映这一点。
[HttpPost]
public ActionResult Import(HttpPostedFileBase file, string Delimiter, string Firstrow)
{
DataTable csvData = new DataTable();
if (file != null && file.ContentLength > 0)
{
try
{
using (TextFieldParser csvReader = new TextFieldParser(file.InputStream))
{
csvReader.SetDelimiters(new string[] { Delimiter });
csvReader.HasFieldsEnclosedInQuotes = Firstrow == "true" ? true : false;
string[] colFields = csvReader.ReadFields();
foreach (string column in colFields)
{
DataColumn DataColumn = new DataColumn(column);
DataColumn.AllowDBNull = true;
csvData.Columns.Add(DataColumn);
}
while (!csvReader.EndOfData)
{
string[] fieldData = csvReader.ReadFields();
for (int i = 0; i < fieldData.Length; i++)
{
if (fieldData[i] == "")
{
fieldData[i] = null;
}
}
csvData.Rows.Add(fieldData);
}
DataSet csvdata = new DataSet();
csvdata.Tables.Add(csvData);
}
BFProj2.Models.OurColumns o = new Models.OurColumns();
DCResultsRepository DCResultsRepos = new DCResultsRepository();
o.DCResults = new List<string>();
for(int y = 0; y <csvData.Columns.Count; y++)
{
string dc = csvData.Columns[y].ColumnName.ToString();
var repository = new DCResultsRepository {
SelectedDCResults= dc
};
//DCResultsRepos.DCResults1 = new List<string>();
List<string> DCList DCResultsRepos.DCResults1 = new List<string>();
var DC = DCResultsRepos.DCResults1(DCResultsRepos.SelectedDCResults.ToList());
}
DCResultsRepos.DCResults1.Contains(DCResultsRepos.SelectedDCResults);
}
catch (Exception ex)
{
//return View("Error"+ ex.GetType().ToString());
}
Ska få med DCResults1 listan med csvData i.
}
return View();
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using BFProj2.Models;
using System.Data.Entity;
namespace BFProj2
{
public class DCResultsRepository
{
public List<string> DCResults1 { get; set; }
public string SelectedDCResults { get; set; }
}
}