1

私はasp.net mvc4が初めてで、プロジェクトを作成しています。私は途中で立ち往生しています。

まず、私のプロジェクトについて説明させてください。製品テーブルを作成していますが、各製品にはいくつかの属性があります。属性とその値を追加するために、 ProductAttributeモデルとAttributeValueモデルを作成しました。次に、ProductAttributeValueモデルを作成して、属性とその値を製品に割り当てました。

今私の問題は、同じビューを使用して属性とその値を追加したいということです。以下は私のモデルです:

[Table("ProductAttribute")]
public class ProductAttribute
{
    [Key]
    [MaxLength(20)]
    public string AttributeId { get; set; }

    [Required]
    [Display(Name = "Attribute Name")]
    [MaxLength(100)]
    public string AttributeName { get; set; }

    [Required]
    [Display(Name = "Datatype")]
    [MaxLength(50)]
    public string AttributeDatatype { get; set; }

    [Required]
    [Display(Name = "Is Active")]
    public bool IsActive { get; set; }

    [Required]
    [Display(Name = "Attribute Type")]
    [MaxLength(30)]
    public string AttributeType { get; set; }
}

[Table("AttributeValue")]
public class AttributeValue
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [Required]
    [MaxLength(20)]        
    public string AttributeId { get; set; }

    [Required]
    [MaxLength(100)]
    public string AttributeName { get; set; }

    [Required]
    [MaxLength(200)]
    public string AttributeVal { get; set; }

    public virtual ProductAttribute ProductAttribute { get; set; }
}

1 つのビューとコントローラーを使用して、異なるテーブルに値を挿入するにはどうすればよいですか? 同じことを行う別の方法があれば、それについて私を助けてください。

ありがとう

4

1 に答える 1

0

私はあなたが何を得ているのか理解していると思います。まず、View Model を構築します。何かのようなもの

public Class Tables
{
    public List<ProductAttribute> Products { get; set; }
    public List<AttributeValue> Values { get; set; }
}

これらのリストをコントローラーから設定し、ビューに渡します。ビューで、次のようにモデルを定義します

@model Tables

次に、ビューで好みの方法でテーブルを作成します。過去に Html.WebGrid を使用したことがありますが、最近は foreach ループのみを使用しています。

<table>
foreach(var temp in Model.Products)
{
     <tr>
         <td>
               temp.Name, etc
         </td>
     </tr>
}
</table>

追加と作成に関しては、テーブルに直接作成または追加するのが好きではありません。通常、テーブルに表示されているのは、それらから必要なすべての情報ではないため、コンテキストメニューまたは編集ボタンを使用します行、コンテキスト メニューの追加ボタン、またはテーブルのすぐ外側にある追加ボタンをクリックすると、編集/追加ページにリダイレクトされてから戻ることができます。次に、状況に最も適した方法で、ポストバック、jquery、部分ビューの更新でテーブルを更新できます。これが役に立てば幸いです:)ああ、テーブルを編集する最良の方法について議論している人々へのリンクがあります 表形式のデータを編集する方法(ASP MVC)

更新: モデルを介してビューに渡され、for (html.textboxfor、textareafor など) を使用してページで使用される情報は、コントローラーに戻されます。これらのフィールドが変更されると、変更された値が返されます。

public ActionResult Index(){
    (build your table class)
    return View(Tables);
}

[HttpPost]
public ActionResult Index(Tables tbl){
     (pass values return from the view to your query for saving to the database)
{
于 2013-09-13T20:04:48.473 に答える