asp.net-mvc-5 - 在 ASP.Net Core MVC Controller 中访问提交按钮的数据属性?

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

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

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

Controller 方法定义如下:

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

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

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

最佳答案

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

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

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

下面的代码展示了如何使用 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>

关于asp.net-mvc-5 - 在 ASP.Net Core MVC Controller 中访问提交按钮的数据属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37999774/

相关文章:

c# - 翻译层上的菜单在自定义模块站点上消失

asp.net-mvc-4 - mvc 过滤器中的依赖注入(inject)是全局的

c# - 如何从 bin 文件夹中删除 *.compiled 文件?

asp.net-core - uri 查询参数中的 asp.net core JWT?

asp.net-core - 如何根据 asp net core 代码中的策略验证用户?

jquery - twitter.typeahead.js 在 asp.net core mvc 项目中不起作用

iis - 发布到 IIS,设置环境变量

twitter-bootstrap - 应用 Bootstrap 折叠时,MVC 客户端验证不起作用

javascript - ASP.NET MVC 捆绑子文件夹结构

asp.net - 获取 ASP.NET 5 beta 6 Controller 中的当前用户