如何从一个按钮的自定义属性中获取值.净MVC

本文关键字:自定义属性 获取 MVC 按钮 一个 | 更新日期: 2023-09-27 18:14:52

假设我在asp.net mvc 3应用程序的表单中有以下按钮:

<input type="submit" name="command" value="Click me" data-custom="D" />

我知道如何从按钮获取值。然而,我得到数据自定义attr值在一个动作方法?非常感谢!!

编辑:

我应该注意,我不允许使用javascript,因为这是一个移动版本的网站的设备,不支持javascript.

如何从一个按钮的自定义属性中获取值.净MVC

然而,我得到数据自定义attr值在一个动作方法?

不,你没有。HTML规范中没有任何内容表明在提交表单时应该将data-*属性发送给服务器。因此,如果你想获得这个值,你需要使用javascript。一种技术包括订阅表单的提交事件,然后自动向表单中注入一个隐藏字段,该字段将由提交按钮的data-*属性填充。这样,该值将被发送到服务器。

但是因为我怀疑你在这里想要实现的是你有多个提交按钮,你想知道哪个按钮在你的控制器动作中被点击。在这种情况下,您可以使用以下命令:

<button type="submit" name="btn" value="S">Save</button>
<button type="submit" name="btn" value="D">Delete</button>
...

,然后让你的控制器动作接受一个名为btn的参数。

但我个人更喜欢使用单独的动作,否则它使控制器动作非常丑陋,因为它将包含大量的if语句。这是一篇很好的博客文章,我想邀请你去看看

不通过get或post传递自定义属性;

您可以从客户端获取自定义属性值(例如使用jQuery .attr()函数),并在提交表单数据之前将其添加到表单数据中。

据我所知,你不能直接从data-... .获取数据您可以编写javascript来获取此值

只能在form中发布表单元素的值和名称,不能传递任何data-*

您可以考虑使用JavaScript来解决这个问题。这个想法是以某种方式将data-custom值合并到您的value属性。

$("input[type=textbox][data-custom]").each(function(index, value) {
   $(value).attr("value", $(value).attr("value") + "$$$" + $(value).attr("data-custom"));
});

从你的action方法中,使用data.split("$$$")[1]得到data-custom

希望能有所帮助