将按钮值从视图传递到控制器 aspnet 5

本文关键字:控制器 aspnet 按钮 视图 | 更新日期: 2023-09-27 18:32:29

我正在构建一个aspnet mvc6应用程序,我想在其中将值从View传递到控制器。我的视图有多个具有 ID 的按钮,我想使用我的视图模型将单击的按钮的 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>

在视图中应该怎么做,以便我可以设置viewmodel的"buttonID"的值,以便在控制器中可用?

将按钮值从视图传递到控制器 aspnet 5

您可以将表单定义为:

<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") 
    ....
}

您可以添加一个输入字段,其中包含要发送的数据。

添加这个:

 <form asp-controller="Home" asp-action="Test">
   <input asp-for="buttonID" value="yourButtonID" type="hidden"/>
   <button value="Add"/>
 </form>