私はmvc4カミソリで作業しています。これは最初のモデルコードです
public class WebLicenses
{
public string WebLicenseName { get; set; }
public int CustomerWebLicensesCount { get; set; }
}
public class WebApplication
{
public string WebApplicationName { get; set; }
public int Count { get; set; }
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}")]
public DateTime? EndDate { get; set; }
public string Never { get; set; }
}
public class griddetail
{
public griddetail( List<WebLicenses> wl1,List<WebApplication> wa1 )
{
wl =wl1;
wa = wa1;
}
//public List<WebLicenses> wl2 { get; private set; }
public List<WebLicenses> wl { get; set; }
public List<WebApplication> wa { get; set; }
}
これは、最初のモデル コードを次のように使用する 2 番目のモデル コードです (ここでは、ストアド プロシージャは 2 テーブルを返します - WebLicenses、WebApplication (以下のコード エラーは --commented になります)
public IEnumerable GetOutlookGridDetail(string customerId = "")
{
List<WebLicenses> weblicenses = new List<WebLicenses>();
List<WebApplication> webapplication = new List<WebApplication>();
griddetail returnValue = new griddetail(weblicenses, webapplication);
SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["SLIMConnectionString"].ConnectionString);
SqlCommand cmd = new SqlCommand("selectCustomerDetail", cn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter param_CustomerID = new SqlParameter("@CustomerID", SqlDbType.VarChar, 10);
param_CustomerID.Value = customerId;
cmd.Parameters.Add(param_CustomerID);
try
{
cn.Open();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
WebLicenses newRecord = new WebLicenses();
newRecord.WebLicenseName = Convert.ToString(reader["WebLicenseName"]);
newRecord.CustomerWebLicensesCount = Convert.ToInt32(reader["CustomerWebLicensesCount"]);
//returnValue.Add(newRecord);
weblicenses.Add(newRecord);
}
reader.NextResult();
while (reader.Read())
{
WebApplication newRecord = new WebApplication();
newRecord.WebApplicationName = Convert.ToString(reader["WebApplicationName"]);
newRecord.Count = Convert.ToInt32(reader["Count"]);
newRecord.Never = Convert.ToString(reader["Never"]);
webapplication.Add(newRecord);
}
returnValue.wl.Add(weblicenses); //here comes error (Argument 1: cannot convert from 'System.Collections.Generic.List<SLIM.Models.WebLicenses>' to 'SLIM.Models.WebLicenses')
}
catch (Exception)
{
// returnValue = null;
}
finally
{
cmd.Dispose();
if (cn.State == ConnectionState.Open)
{
cn.Close();
}
}
return returnValue;
}
これは私のコントローラーコードです。
[HttpPost]
public ActionResult GridViewPartialView(string recordId)
{
IEnumerable result1 = (new SlimHomePageData()).GetRecords(recordId, "");
IEnumerable result2 = (new SlimHomePageData()).GetRecords();
List<object> finalResult = new List<object>();
finalResult.Add(result1);
finalResult.Add(result2);
return PartialView("OutlookGridDetail", finalResult);
}
2 つのリストで構成される単一のリストを返したい (ただし、上記のエラーが発生します)。また、ストアドプロシージャが複数のテーブルを返し、モデルを介してビューに値を設定したいので、このアプローチは正しいですか。