如何将数据检索到文本框中

时间:2017-12-06 04:57:15

标签: c# .net

我的观点::

 foreach (TSM.Models.Tasks itm in lstTasks.Where(x => x.Project.ID == item.ID).ToList())
            {

 foreach (TSM.Models.TimeSheetData itemm in ViewBag.HoursData)
 {
 foreach (TSM.Models.Tasks itm in lstTasks.Where(x => x.Project.ID == item.ID).ToList())
                {


     <td><input class="txtTaskHours date@(Date.AddDays(i).ToString("MMddyyy"))" 
                style="width:50px;" value="@itemm.Hours" type="number" 
                id="@(itm.ID.ToString() + ':' + Date.AddDays(i).ToString("MMddyyy"))" />
     </td>
 }

我的控制器:

var query = (from ts in db.TimeSheets join tsd in db.TimesheetData on ts.ID  
             equals tsd.TimeSheet.ID where ts.StartDate == thisWeekStart 
             && ts.EndDate == thisWeekEnd select new{ tsd.Hours, tsd.Date, tsd.TaskID }).ToList();

ViewBag.HoursData = query;
return PartialView("~/Views/TimeSheet/_TimeSheet.cshtml", ViewBag); 

我想将数据显示到Textbox。要显示数据,我使用ViewBag使用foreach循环来显示Textbox中的小时数。

我的Textbox数据保存在json中。 这是我的json值:

"TaskHours" : [{
                 "ID":"f2886ec7-47d3-e711-9666-000c297c9306:12042017",
                 "Value":"25"
               }]

我收到此错误:

   'Unable to cast object of type 
  '<>f__AnonymousType9`3[System.Double,System.DateTime,System.‌​Guid]' to type 
  'TSM.Models.TimeSheetData'.

1 个答案:

答案 0 :(得分:0)

这是您的代码并注意select new

var query = (from ts in db.TimeSheets join tsd in db.TimesheetData on ts.ID  
    equals tsd.TimeSheet.ID where ts.StartDate == thisWeekStart 
    && ts.EndDate == thisWeekEnd 
    select new{ tsd.Hours, tsd.Date, tsd.TaskID }).ToList();

您正在选择一堆匿名对象,然后调用ToList(),以便最终得到一个匿名对象列表。然后你这样做:

ViewBag.HoursData = query;

所以现在ViewBag.HoursData有一个匿名类型列表。然后在视图中执行此操作:

foreach (TSM.Models.TimeSheetData itemm in ViewBag.HoursData)

我的问题是:

您希望运行时如何将匿名类型转换为TimeSheetData?它不能这样给你这个明确的错误:

  

无法转换类型为&lt;&gt; f__AnonymousType9`3 [System.Double,System.DateTime,System.Guid]&#39;的对象输入   TSM.Models.TimeSheetData&#39;

帮自己一个大忙:我看不到你的所有代码,只是专门为你的视图创建一个模型,然后将你需要的所有内容放入其中并将其传递给你的视图。有些人称之为View Model。您的代码将更清晰,更易于阅读并且更少的错误。通过发送匿名类型,自定义类型和ViewBag以及此而停止黑客攻击。即使它起作用,它仍然看起来很难看。所以去创建一个模型,如链接所示。