2016-08-09 2 views
0

私はmvc 5で小さなアプリケーションを実行しようとしています。これは3つのモデルが組織モデル、製品モデル、パッケージモデルです。ASP.NET MVC 5は1つのビューで3つのモデルデータを取得します

組織モデル:

namespace Own.Models 
{ 
    public class OrganisationViewModel 
    { 
    [Key] 
    public int OrganisationID { get; set; } 

    [Required(ErrorMessage = "Please enter Organisation name")] 
    public string OrganisationName { get; set; } 

    [Required(ErrorMessage = "Please enter organisation address")] 
    public string OrganisationAddress { get; set; } 

パッケージモデル:

namespace Own.Models 
{ 
    public class PackageViewModel 
    { 
    [Key] 
    public int PackageID { get; set; } 

    [Required(ErrorMessage = "Please enter packagename")] 
    public string Packagename { get; set; } 

    [Required(ErrorMessage = "Please enter packagedescription")] 
    public string PackageDescription { get; set; } 

商品型番:

namespace Own.Models 
{ 
    public class ProductViewModel 
    { 
    [Key] 
    public int ProductID { get; set; } 

    [Required(ErrorMessage = "Please enter Product Name")] 
    public string ProductName { get; set; } 

    [Required(ErrorMessage = "Please enter Product Description")] 
    public string ProductDescription { get; set; } 

は今、私は別のモデルという名前の提出モデルを作成する必要があります。ここでは、このサブミッションビューで、組織、製品、およびパッケージの3つのドロップダウンリストが必要です。ドロップダウンで項目を選択して[組織]ドロップダウンを選択すると、組織ID、組織名、組織アドレスが表示されます(詳細が表示されるだけです)。

同様にパッケージと製品についても、すべての詳細を表示する必要があります。詳細を表示するには、一番下のビューに詳細を保存するボタンが必要です。ここではデータベースを使用していません。一部の静的データのみ。最後のモデルビューで3つのモデルのデータをすべて表示する方法は?ドロップダウンの選択時にその読み込み専用のデータを取得する方法について説明します。

+0

組織、製品、パッケージのデータはどこから取得していますか? – Shyju

+0

これまでに何を試しましたか?あなたは基本的にあなたのビューのドロップダウンをレンダリングする必要があります(http://stackoverflow.com/questions/34300916/dropdownlist-from-ienumerable/34301135#34301135)、そしてアイテムが選択されたら、ajaxコールを作成して渡します詳細を取得してビューで表示するID](http://stackoverflow.com/questions/11759750/i-want-to-populate-text-box-with-dropdown-selection-with-jquery)。どちらの部分に問題がありますか?あなたの特定の問題を教えてください。 – Shyju

+0

WireframeModel(ViewModel)を作成し、そこに3つのオブジェクトを表示して参照することをお勧めします。 –

答えて

0

あなたはビューで、あなたはこの

   @Html.DropDownListFor(m1 => m1.ID, ViewBag.OrgDdl as IEnumerable<SelectListItem>) 

希望と同じように使用できるフィールドに

obj =db.Org 
.Where(...) 
.ToList() 
.Select(s => new 
{ ID=s.ID, 
    Description = string.Format("{0}-- £{1}", s.Name,s.Description) 
}); 

Viewbag.OrgDdl=new SelectList(obj,"ID","Description"); 

をCONCATするanonamousタイプを作成することができ、この

0

は、この問題への最善のアプローチがあるのに役立ちます前述の3つのオブジェクトからなるView Modelをプロパティとして作成します。ような何か:

public class MyNewViewModel 
{ 
    public OrganisationViewModel MyOrganisation { get; set; } 
    public PackageViewModel MyPackage { get; set; } 
    public ProductViewModel MyProduct { get; set; } 
} 

次にあなたが最初にMyNewViewModelコンストラクタ内であなたの特性を取り込むことができたり、任意のアクションやAJAXコールバック中にseperatlyそれらをpopulteすることができます。したがって、関連するすべてのデータを表示することができます。

関連する問題