其实我是MVC的初学者。简单的问题:
例如,我有类别页面的ViewModel:
public class CategoryViewModel
{
public int ProductId {get;set;}
public int CategoryId {get;set;}
public string ProductName {get;set;}
public string CategoryName {get;set;}
}
在控制器中,我只是将CategoryId
和CategoryName
传递给视图:
public ActionResult Index()
{
CategoryViewModel categoryViewModel = new CategoryViewModel();
categoryViewModel.CategoryId = catId; \\Get from DB
categoryViewModel.CategoryName = catName; \\Get from DB
return View("Category", categoryViewModel);
}
然后在视图中我需要将产品添加到此类别:
<form action=@Url.Action("AddProduct", "Category") method="POST" enctype = "multipart/form-data">
<textarea name ="ProductName"></textarea>
<input type="submit" value="Add"/>
</form>
在AddProduct的控制器中:
[HttPost]
public ActionResult AddPost(CategoryViewModel categoryViewModel)
{
var productName = categoryViewModel.ProductName;
var categoryId = ?
ProductRepository.AddProductToCategory(productName, categoryId);
return new EmptyResult();
}
问题:如何获得CategoryId
?或许还有另一种方法?
答案 0 :(得分:8)
更改您的视图以包含CategoryId
属性
@model CategoryViewModel
@using(Html.BeginForm("AddProduct", "Category"))
{
@Html.HiddenFor(m => m.CategoryId)
@Html.TextAreaFor(m => m.ProductName)
<input type="submit" value="Add" />
}
注意,请始终使用强类型html帮助程序来生成html。
答案 1 :(得分:2)
Stephen Muecke
您也可以从(表单自身)和您想要的其他属性传递id,但您必须在输入操作方法中定义。
@model CategoryViewModel
@using (Html.BeginForm("AddProduct", "Category", new { id = Model.CategoryId }, FormMethod.Post, new { }))
{
@Html.TextAreaFor(m => m.ProductName)
<input type="submit" value="Add" />
}
行动方法:
[HttPost]
public ActionResult AddPost(CategoryViewModel categoryViewModel,int id)
{
var productName = categoryViewModel.ProductName;
var categoryId = id
ProductRepository.AddProductToCategory(productName, categoryId);
return new EmptyResult();
}
我希望这对你有所帮助。