在ASP.Net Core MVC控制器中访问提交按钮的数据属性?

时间:2016-06-23 19:02:52

标签: asp.net-mvc-5 asp.net-core-mvc

我有一个提交按钮,其中包含以下HTML:

<button type="submit" class="back-button" data-direction="back">Back</button>

控制器方法的定义如下:

[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Index(SearchModel searchModel, string SearchBy, string dataDirection)
{
    // Code removed for simplicity...    
}

当我单击该按钮时,我的模型已填充,但 dataDirection 属性未填充。

访问这些数据属性的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

这不是ASP .NET MVC问题。对于提交按钮,浏览器仅在提交表单时发送“value”属性的值。按钮的名称用作参数名称,该值用作参数值。

如果您想根据单击的按钮发送表单的其他参数,您必须使用Javascript来监听按钮的“点击”事件,并将自定义参数添加到帖子数据或设置一些隐藏字段提交前的价值观。

最简单的方法是在表单中放置名为“Direction”的隐藏字段,单击listen按钮将其值设置为“back”或“next”。如果您有方向的默认值,或者您希望在回发后将最后一个方向值设置为隐藏字段,则可以在模型上放置“方向”属性。

下面的代码显示了如何使用jQuery:

<input type="hidden" name="Direction" value="@Model.Direction" id="fldDirection" />

<script type="text/javascript">
   $("[type='submit']").on('click', function() {
      if ($(this).data('direction')) {
         $("#fldDirection").val($(this).data('direction'));
      }
   }
</script>