C# asp.net |控制器将数据从数据库传输到视图
Desc:C# asp.net |控制器将数据从数据库传输到视图,c#,asp.net,asp.net-mvc,entity-framework,asp.net-core,C#,Asp.net,Asp.net Mvc,Entity Framework,Asp.net Core,Desc: 我使用EF从数据库中获取信息 这给了我列表格式的信息 卡数=31 [0]{App.Models.Card} [1] {App.Models.Card} [2] {App.Models.Card} 我想将此数据从控制器传输到视图 我试着这样做: 控制器: [HttpPost] public async Task MethodsReturnView(以前从\u ajax上传的\u数据\u字符串) { var userName=\u httpContextAccessor.Htt
- 我使用EF从数据库中获取信息
- 这给了我列表格式的信息 卡数=31 [0]{App.Models.Card} [1] {App.Models.Card} [2] {App.Models.Card}
- 我想将此数据从控制器传输到视图
- 我试着这样做:
[HttpPost]
public async Task MethodsReturnView(以前从\u ajax上传的\u数据\u字符串)
{
var userName=\u httpContextAccessor.HttpContext.User.Identity.Name;
var userDetailsAU=\u ecpContext.AC\u Merge\u V.FirstOrDefault(f=>f.ADlogin==userName);
var userDetails=\u context.Uzytkownicy.FirstOrDefault(f=>f.Adlogin==userName);
dynamic serializer=JsonConvert.DeserializeObject(以前从ajax上传数据);
var numeriesiacaobject=序列化程序[“numeriesiaca”];
var numerRokuObject=序列化程序[“numerRoku”];
var liczbadinobject=序列化程序[“liczbaDni”];
int numeriesiaca=Convert.ToInt32(numeriesiacaobject);
int numerRoku=Convert.ToInt32(numerRokuObject);
int-liczbaDni=Convert.ToInt32(liczbadinobject);
ViewBag.numeriesiaca=numeriesiaca;
ViewBag.numeroku=numeroku;
ViewBag.liczbadni=liczbadni;
var dbExists=\u ecpContext.Karta.FirstOrDefault(f=>f.DzMiesiaca==1&&f.Miesiac==numeriesiaca&&f.Rok==numeriorku&&f.Login==userName);
if(dbExists==null)
{
List objKartaModel=新列表();
for(inti=1;if.Miesiac==numeriesiaca&f.Rok==numerioku&f.Login==userName).OrderBy(x=>x.Rok).ThenBy(x=>x.Miesiac).ThenBy(x=>x.DzMiesiaca.ToList();
返回部分视图(“返回视图”,karta);
}
问题:
- 但如果在返回的视图附近添加“card”,则会抛出一个错误 加载资源失败:服务器响应状态为500(内部服务器错误)
- 调用return命令时引发错误(已调查,红点)
- 如果不发送此数据,视图将正常返回
公共部分类Karta_模型
{
[关键]
公共int Id{get;set;}
公共int?NrDay{get;set;}
公共int?nrmount{get;set;}
公共整数?NrYear{get;set;}
公共字符串?Rozpoczecie{get;set;}
公共字符串?Zakonczenie{get;set;}
公共字符串?OdbiorGodzin{get;set;}
...
}
公共部分类ParentView
{
公共列表模型1{get;set;}
}
查看:
使用AppEcp.Models
@模型父视图
@对于(int nr_rows=0;nr_rows<@ViewBag.daysInMonth;nr_rows++)
{
@Html.TextBoxFor(m=>m.Model1[nr_行].Rozpoczecie,新{@class=“start”,@type=“time”})
@Html.TextBoxFor(m=>m.Model1[nr_行].Zakonczenie,新{@class=“end”,@type=“time”})
@Html.TextBoxFor(m=>m.Model1[nr_行].OdbiorGodzin,新{@class=“gethours”,@type=“time”})
}
问题:
- 是否有其他方法将此数据从控制器发送到视图
- 我做错了什么
列表
,而在视图中,您需要的是父视图
所以你应该这样做
var karta = _ecpContext.Karta.Where(f => f.Miesiac == numerMiesiaca && f.Rok == numerRoku && f.Login == userName).OrderBy(x => x.Rok).ThenBy(x => x.Miesiac).ThenBy(x => x.DzMiesiaca).ToList();
var kartaModel = karta.Select(p => new Karta_Model
{
Id = p.Id // Assign the rest of properties here
}).ToList();
var viewModel = new ParentView { Model1 = kartaModel };
return PartialView("_ReturnView", viewModel);
如果在返回的视图附近添加“卡”,则会给我带来一个错误:控制器中的代码在哪里?@Phong update,请指导我,因为我已经受此困扰很长时间了
[HttpPost]
public async Task<ActionResult> MethodsReturnView(string previously_uploaded_data_from_ajax)
{
var userName = _httpContextAccessor.HttpContext.User.Identity.Name;
var userDetailsAU = _ecpContext.AC_Merge_V.FirstOrDefault(f => f.ADlogin == userName);
var userDetails = _context.Uzytkownicy.FirstOrDefault(f => f.Adlogin == userName);
dynamic serializer = JsonConvert.DeserializeObject<IDictionary>(previously_uploaded_data_from_ajax);
var numerMiesiacaObject = serializer["numerMiesiaca"];
var numerRokuObject = serializer["numerRoku"];
var liczbaDniObject = serializer["liczbaDni"];
int numerMiesiaca = Convert.ToInt32(numerMiesiacaObject);
int numerRoku = Convert.ToInt32(numerRokuObject);
int liczbaDni = Convert.ToInt32(liczbaDniObject);
ViewBag.numerMiesiaca = numerMiesiaca;
ViewBag.numerRoku = numerRoku;
ViewBag.liczbadni = liczbaDni;
var dbExists = _ecpContext.Karta.FirstOrDefault(f => f.DzMiesiaca == 1 && f.Miesiac == numerMiesiaca && f.Rok == numerRoku && f.Login == userName);
if (dbExists == null)
{
List<Karta_Model> objKartaModel = new List<Karta_Model>();
for (int i = 1; i <= liczbaDni; i++)
{
var model = new Karta_Model()
{
// sth
};
objKartaModel.Add(model);
}
await _ecpContext.Karta.AddRangeAsync(objKartaModel);
await _ecpContext.SaveChangesAsync();
}
var karta = _ecpContext.Karta.Where(f => f.Miesiac == numerMiesiaca && f.Rok == numerRoku && f.Login == userName).OrderBy(x => x.Rok).ThenBy(x => x.Miesiac).ThenBy(x => x.DzMiesiaca).ToList();
return PartialView("_ReturnView", karta);
}
public partial class Karta_Model
{
[Key]
public int Id { get; set; }
public int? NrDay{ get; set; }
public int? NrMonth { get; set; }
public int? NrYear{ get; set; }
public string? Rozpoczecie { get; set; }
public string? Zakonczenie{ get; set; }
public string? OdbiorGodzin{ get; set; }
...
}
public partial class ParentView
{
public List<Karta_Model> Model1 { get; set; }
}
using AppEcp.Models
@model ParentView
@for (int nr_rows = 0; nr_rows < @ViewBag.daysInMonth; nr_rows++)
{
<tr>
<td>@Html.TextBoxFor(m => m.Model1[nr_rows].Rozpoczecie, new { @class = "start", @type = "time" })</td>
<td>@Html.TextBoxFor(m => m.Model1[nr_rows].Zakonczenie, new { @class = "end", @type = "time" })</td>
<td>@Html.TextBoxFor(m => m.Model1[nr_rows].OdbiorGodzin, new { @class = "gethours", @type = "time" })</td>
</tr>
}
var karta = _ecpContext.Karta.Where(f => f.Miesiac == numerMiesiaca && f.Rok == numerRoku && f.Login == userName).OrderBy(x => x.Rok).ThenBy(x => x.Miesiac).ThenBy(x => x.DzMiesiaca).ToList();
var kartaModel = karta.Select(p => new Karta_Model
{
Id = p.Id // Assign the rest of properties here
}).ToList();
var viewModel = new ParentView { Model1 = kartaModel };
return PartialView("_ReturnView", viewModel);