我正在构建一个aspnet mvc6应用程序,我希望将值从View传递给控制器。我的视图有多个具有ID的按钮,我想传递使用我的viewmodel点击我的控制器的按钮的ID。
控制器:
public class HomeController : Controller
{
private SampleDbContext _context;
private HomeViewModel _viewmodel;
public HomeController(SampleDbContext context, HomeViewModel model)
{
_viewmodel = model;
_context = context;
}
public IActionResult Index()
{
_viewmodel.model = _context.MyModel.ToList();
return View(_viewmodel);
}
public IActionResult Test()
{
var x = _viewmodel.buttonID;
return View();
}
}
视图模型:
public class HomeViewModel
{
public IEnumerable<MyModel> model { get; set; }
public int buttonID { get; set; }
}
查看:
@model MyProject.ViewModels.HomeViewModel
<table>
@foreach (var item in Model.model)
{
<tr>
<td>
<form asp-controller="Home" asp-action="Test">
<button value="Add"/>
</form>
</td>
</tr>
}
</table>
在视图中应该做些什么,以便我可以设置&#39; buttonID
&#39; viewmodel
,以便它在控制器中可用?
答案 0 :(得分:2)
您可以将表单定义为:
<form asp-controller="Home" asp-action="Test">
<button value="Add" name="buttonName"/>
</form>
查看模型:
public class HomeViewModel
{
public IEnumerable<MyModel> model { get; set; }
public string buttonName { get; set; }
}
和控制器:
public ActionResult Test(HomeViewModel model) {
if(model.buttonName == "Add")
....
}
答案 1 :(得分:0)
您只需添加一个包含您要发送的数据的输入字段。
添加:
<form asp-controller="Home" asp-action="Test">
<input asp-for="buttonID" value="yourButtonID" type="hidden"/>
<button value="Add"/>
</form>