2017-03-31 15 views
0

エンティティデータモデルを使用したAsp.NET MVCのアプリケーションがあります。今私は1つのプロパティ 'State_Name'を持っているstate_masterテーブルのモデルを持っており、データベーステーブルに2つのフィールド 'State_ID'が自動的にインクリメントされ、データを挿入する 'State_Name'があります。 モデルに1つのプロパティしかないので、このモデルを使用して 'State_ID'と 'State_Name'の両方のフィールドを取得することができません。これは私が直面している問題です。Asp.NET MVCですべてのフィールドフォームデータベースを取得するには?

状態モデルファイル:

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"); 
     } 
    } 
} 
+0

あなたのモデルにstate_Idを保存しないのはなぜですか?それがなければ、データをどのようにバインドできますか? –

+0

私のstate_idがデータベースフィールドで自動インクリメントされるので、データを挿入するとエラーがスローされます。 –

+1

Entity Frameworkを使用していますか? EFには、ID列とデータベースで処理される値生成をマップする手段があります。新しいエンティティを挿入するときにIDを設定する必要はありません。 Idプロパティ以外のプロパティの値を設定する必要があります。 –

答えて

0

データベースのすべてのフィールド。たとえば、

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

コントローラメソッドでは、この1つをフェッチとバインドに使用できます。 挿入レコードのあなたは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"); 
    } 

参照を使用することができると、ビューモデルはあなたのビューでデータをレンダリングする以外の何ものでもありません。 ビューモデルの詳細を知りたい場合はhere

関連する問題