将视图中的按钮值传递给控制器​​aspnet 5

时间:2016-01-30 10:27:39

标签: c# razor asp.net-core-mvc

我正在构建一个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,以便它在控制器中可用?

2 个答案:

答案 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>