Asp.net mvc 如何将MVC4中的海量动态返回到视图?
我正在从数据库中提取行以查找特定列。现在它正在拉取5行,我需要为模型中的每一行引用正确的列。这是我的控制器:Asp.net mvc 如何将MVC4中的海量动态返回到视图?,asp.net-mvc,asp.net-mvc-4,methods,Asp.net Mvc,Asp.net Mvc 4,Methods,我正在从数据库中提取行以查找特定列。现在它正在拉取5行,我需要为模型中的每一行引用正确的列。这是我的控制器: public ActionResult Index() { //Use mimetype as key to find correct rows var mimetype = "mcv"; dynamic LookupData = GetVideoUrls(mimetype); return View(LookupD
public ActionResult Index()
{
//Use mimetype as key to find correct rows
var mimetype = "mcv";
dynamic LookupData = GetVideoUrls(mimetype);
return View(LookupData);
}
private dynamic GetVideoUrls(string mimetype)
{
var VideoService = new AppServices.Video.GetAllVideoByMimeType();
dynamic videoFiles = VideoService.Execute(mimetype);//Execute grabs the rows from the database
return (videoFiles);
}
我认为:
@model IEnumerable<dynamic>
希望这也有帮助
更新
以下是videoservice.execute代码:
public class GetAllVideoByMimeType
{
public dynamic Execute(string mimetype)
{
return DBRepository.GetAllByCritera<DataContainers.File>("WHERE MimeType = @0", mimetype);
}
}
公共类GetAllVideoByMimeType
{
公共动态执行(字符串mimetype)
{
返回DBRepository.GetAllByCritera(“其中MimeType=@0”,MimeType);
}
}
更新3
以下是存储库:
/// <summary>
/// Obtain one or more items from db based on Where Clase
/// </summary>
/// <typeparam name="T">Table Type</typeparam>
/// <param name="whereClause">Standard WHERE clause with paramterized statements
/// Example: WHERE someID=@0",args: 4
/// </param>
/// <param name="arguments"></param>
/// <returns></returns>
public static IEnumerable<dynamic> GetAllByCritera<T>(string whereClause, params object[] arguments)
{
var model = new DBTableModel<T>();
return model.All(where: whereClause, args: arguments);
}
//
///根据Where Clase从数据库中获取一个或多个项目
///
///表格类型
///带有参数化语句的标准WHERE子句
///示例:其中someID=@0”,args:4
///
///
///
公共静态IEnumerable GetAllByCritera(字符串whereClause,参数对象[]参数)
{
var模型=新的DBTableModel();
返回model.All(where:where子句,args:arguments);
}
如果我尝试以下操作会怎么样:
public ActionResult Index()
{
//使用mimetype作为键查找正确的行
var mimetype=“mcv”;
动态lookUpdatea=GetVideoUrls(mimetype);
返回视图(lookupdatea);
}
私有动态GetVideoURL(字符串mimetype)
{
var VideoService=new-AppServices.Video.GetAllVideoByMimeType();
List videoFiles=VideoService.Execute(mimetype);
ApplicationVideoModel appvids=新的ApplicationVideoModel();
动态登录文件=视频文件。其中(v=>v.OriginalFileNameWithoutExtension==“LoginController”).FirstOrDefault();
动态WelcomeFiles=视频文件。其中(v=>v.OriginalFileNameWithoutExtension==“WelcomeController”).FirstOrDefault();
动态BenefitFiles=videoFiles.Where(v=>v.OriginalFileNameWithoutExtension==“BenefitController”).FirstOrDefault();
动态MyEnrollmentFiles=视频文件。其中(v=>v.OriginalFileNameWithoutExtension==“MyEnrollmentController”).FirstOrDefault();
动态AdminFiles=videoFiles.Where(v=>v.OriginalFileNameWithoutExtension==“AdminSideController”).FirstOrDefault();
返回登录文件;
}
每个动态都会返回我需要的行,但是如何将每个行发送到视图?根据您提供的示例模型,您的公共模型对象可以如下所示 然后可以按如下方式更新
getvideourl
您的视图预期模型为
@model IEnumerable<VideoUrlModel>
@model IEnumerable
并访问作为视图模型传递的集合以下是我的应用程序的工作原理:
public ActionResult Index()
{
//Use mimetype as key to find correct rows
var mimetype = "mcv";
var VideoService = new AppServices.Video.GetAllVideoByMimeType();
List<dynamic> videoFiles = VideoService.Execute(mimetype);
dynamic mymodel = new System.Dynamic.ExpandoObject();
mymodel.LoginFiles = videoFiles.Where(v => v.OriginalFileNameWithoutExtension == "LoginController").FirstOrDefault();
mymodel.BenefitFiles = videoFiles.Where(v => v.OriginalFileNameWithoutExtension == "BenefitController").FirstOrDefault();
mymodel.WelcomeFiles = videoFiles.Where(v => v.OriginalFileNameWithoutExtension == "WelcomeController").FirstOrDefault();
mymodel.MyEnrollmentFiles = videoFiles.Where(v => v.OriginalFileNameWithoutExtension == "MyEnrollmentController").FirstOrDefault();
mymodel.AdminSideFiles = videoFiles.Where(v => v.OriginalFileNameWithoutExtension == "AdminSideController").FirstOrDefault();
return View(mymodel);
}
谢谢你的帮助!你能为这个创建一个视图模型吗?是的。但是它是如何工作的?更新了原始问题添加模型,但不知道这与我正在做的工作是如何工作的。什么类型的
VideoService.Execute
return?我根据添加的信息更新了答案,我现在明白了。问题though、 我有多行,两个列名是englishvideourl和spanishvideourl。如何引用每行,然后引用该行的列?取决于VideoService的内容。执行返回。我对返回的内容进行了假设,并在OP上进行了询问,但您尚未给出响应。那么返回的是什么类型?我更新了代码的原始问题是videoservice.execute
。它返回一个符合mimetype=标准的所有行的动态。JeffMcbride我得到了动态部分。我试图理解动态背后的内容。因为它不是一个具体的类型,我只是猜测属性是什么。现在我不知道你的repository正在将列映射到属性。你明白我的意思吗?我想是的。我用存储库更新了这个问题。这有帮助吗?DBTableMNodel只是我到数据库的连接字符串。
public class VideoUrlModel {
public string EnglishVideoUrl { get; set; }
public string SpanishVideoUrl { get; set; }
}
private IEnumrable<VideoUrlModel> GetVideoUrls(string mimetype) {
var VideoService = new AppServices.Video.GetAllVideoByMimeType();
var videoFiles = VideoService.Execute(mimetype);
var models = videoFiles.Select(row =>
new VideoUrlModel {
EnglishVideoUrl = row.englishvideourl,
SpanishVideoUrl = row.spanishvideourl
});
return models;
}
public ActionResult Index() {
//Use mimetype as key to find correct rows
var mimetype = "mcv";
var LookupData = GetVideoUrls(mimetype);
return View(LookupData);
}
@model IEnumerable<VideoUrlModel>
public ActionResult Index()
{
//Use mimetype as key to find correct rows
var mimetype = "mcv";
var VideoService = new AppServices.Video.GetAllVideoByMimeType();
List<dynamic> videoFiles = VideoService.Execute(mimetype);
dynamic mymodel = new System.Dynamic.ExpandoObject();
mymodel.LoginFiles = videoFiles.Where(v => v.OriginalFileNameWithoutExtension == "LoginController").FirstOrDefault();
mymodel.BenefitFiles = videoFiles.Where(v => v.OriginalFileNameWithoutExtension == "BenefitController").FirstOrDefault();
mymodel.WelcomeFiles = videoFiles.Where(v => v.OriginalFileNameWithoutExtension == "WelcomeController").FirstOrDefault();
mymodel.MyEnrollmentFiles = videoFiles.Where(v => v.OriginalFileNameWithoutExtension == "MyEnrollmentController").FirstOrDefault();
mymodel.AdminSideFiles = videoFiles.Where(v => v.OriginalFileNameWithoutExtension == "AdminSideController").FirstOrDefault();
return View(mymodel);
}
@Model.LoginFiles.EnglishVideoURL