我是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; }
}
如何使用一个视图和控制器将值插入到不同的表中?如果还有其他方法可以做同样的事情,请帮助我。
由于
答案 0 :(得分: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>
至于添加和创建我从来没有直接在表中创建或添加的粉丝,一般我在表中显示的并不是我想要的所有信息所以我使用上下文菜单或编辑行上的按钮,然后在上下文菜单中或在表格外部添加按钮,该按钮将重定向到编辑/添加页面,然后导航回来。然后你可以使用post back,jquery刷新表格,刷新局部视图,最适合你的情况。希望这有助于:) 哦,这里是人们讨论如何编辑表格的链接 How to edit tabular data (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)
{