2011-11-17 55 views
0

说,比如我已经在asp.net mvc的形式以下按钮3应用:如何在ASP.NET MVC的按钮的自定义属性中获得的价值

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

我知道如何从按钮获取值..但是,我是否在操作方法中获取数据自定义attr值?非常感谢你!!

编辑:

我要指出,我不能使用JavaScript在所有的,因为这是网站对于不支持JavaScript的设备的移动版本..

回答

2

但是做我在动作方法中获取数据自定义attr值?

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

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

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

,然后让你的控制器动作,像是叫btn参数。

但是我个人更喜欢使用单独的动作,否则它会使控制器动作非常丑陋,因为它会包含很多if语句。这里有一个nice blog post我会邀请你去结账。

+0

我更新了我的问题。我不允许使用任何JavaScript .. – Dragan

+0

BINGO !!我不知道你可以这样设置按钮的文字!非常感谢Darin。 Pozdrav od Makedonija :) - 我会在4分钟内将您的答案标记为正确。所以zdravje – Dragan

0

自定义属性不会通过get或post传递;只有值才能做到。

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

+0

我正在构建一个移动应用程序,它应该支持启用JavaScript的设备以及不支持JavaScript的旧设备。我已经使用jquery mobile开发了javascript版本。但是我不允许在这个项目中使用jquery。我知道如何通过JavaScript获得该值..任何想法? – Dragan

+0

为什么不是隐藏的输入?

0

据我所知,你不能直接从数据中获取数据-...。你可以写javascript来获得这个值。

+0

我更新了我的问题,我不允许使用任何javascript – Dragan

0

只有表格元素的值和名称张贴在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")); 
}); 

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

希望这会有所帮助