エンティティデータモデルを使用した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");
}
}
}
あなたのモデルにstate_Idを保存しないのはなぜですか?それがなければ、データをどのようにバインドできますか? –
私のstate_idがデータベースフィールドで自動インクリメントされるので、データを挿入するとエラーがスローされます。 –
Entity Frameworkを使用していますか? EFには、ID列とデータベースで処理される値生成をマップする手段があります。新しいエンティティを挿入するときにIDを設定する必要はありません。 Idプロパティ以外のプロパティの値を設定する必要があります。 –