如何在Asp.NET MVC中从数据库中获取所有字段?

时间:2017-03-31 14:12:10

标签: asp.net-mvc entity-framework

我在Asp.NET MVC中有一个带有实体数据模型的应用程序。现在我有一个state_master表的模型,其中我只有一个属性'State_Name',在数据库表中我有2个字段'Sta​​te_ID',它是自动递增的'State_Name',我将为其插入数据。 现在因为我在Model I中只有一个属性,所以无法使用此模型同时获取字段'Sta​​te_ID'和'State_Name'。这是我面临的问题。

州模型档案:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace ViewData.Models
{
 public class state_model
      {
        [Key]
        public string state_name { get; set; }
       }
 }

查看文件:

@using ViewData.Models
@{
   Layout = null;
 }

  <!DOCTYPE html>
  <html>
  <head>
  <meta name="viewport" content="width=device-width" />
  <title>state_view</title>
  </head> 
  <body>
   <div> 
   <ul>
      @foreach (var state in ViewData["states"] as   IList<state_model>)
          {
            <li>
               @state.state_name
            </li>
           }
   </ul>
   </div>
   </body>
   </html>

控制器文件:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using ViewData.DataAccessLayer;
using ViewData.Models;
namespace ViewData.Controllers
{
 public class StateController : Controller
    {
     // GET: State
     public ActionResult Index()
        {
         DataLayer dl = new DataLayer();
         IList<state_model> data = (from o in dl.states select o).ToList();
         ViewData["states"] = data;
         return View("state_view");
         }
     }
 }

1 个答案:

答案 0 :(得分:0)

您需要为状态创建视图模型以获取并绑定数据库中的所有字段。例如,

public class state_ViewModel
  {
    [Key]
    public int state_Id { get; set; } //check with your data type
    public string state_name { get; set; }
   }

所以在你的控制器方法中,你可以使用这个来获取和绑定。对于插入记录,您可以使用 state_model

在你的行动方法中,

public ActionResult Index()
    {
     DataLayer dl = new DataLayer();
     IList<state_ViewModel> data = (from o in dl.states select o).ToList();
     ViewData["states"] = data;
     return View("state_view");
     }

请参阅,View Model只是在您的视图中呈现数据。 要了解有关视图模型的更多信息,请单击here