【问题标题】:Pass parameters in Html.BeginForm that don't come from <input>在 Html.BeginForm 中传递不来自 <input> 的参数
【发布时间】:2015-06-02 21:04:18
【问题描述】:

我正在使用Html.BeginForm("Details", "ControllerName", FormMethod.Post) 向我的Controller 发送一些参数。一切正常。但是,它仅适用于 Html 中的&lt;input&gt; 标签。有没有办法发布其他标签的价值?例如&lt;span&gt; 或其他什么?所以最后在我的ActionResult Details() 中,我可以在&lt;span&gt; 中接收这些值?

谢谢

【问题讨论】:

  • 你面临的问题是BeginForm()方法是用来写一个&lt;form&gt;标签的,它把数据从&lt;input&gt;标签发送到服务器。我不确定您对 HTML 表单的体验如何,但这是一本不错的入门书:developer.mozilla.org/en-US/docs/Web/Guide/HTML/Forms
  • 谢谢。我不知道这一点。
  • 欢迎来到网络开发。该网站对于学习 HTML、javascript 和 CSS 的来龙去脉非常有帮助。

标签: c# asp.net-mvc http-post html.beginform


【解决方案1】:

不,你不能。只有inputselecttextarea 控件值被发布到服务器。您可以在后台设置一个带有 span 值的隐藏输入控件,但您不能期望 span 会自动发布。

【讨论】:

  • 哦。不知道。谢谢
  • 这在技术上是不正确的,因为您可以在输入控件之外的表单中使用其他 html 元素。例如,textarea 或 select 将是有效的表单元素,并且可以使用表单提交来发送它们的值/选定值。
  • @heymega:输入控件我的意思是说控件允许用户输入,而不是 input 类型的元素。如果这还不够清楚,我可以澄清一下
  • @ClaudioRedi,从技术上讲,
    ` 允许用户输入但不会回发:)
  • @Stephen Muecke:澄清了我的回答。谢谢
【解决方案2】:

如果您使用 javascript,则可以。下面的例子。

document.getElementById('submit').onclick = function(e) {
    e.preventDefault();

    var form = document.getElementById('myForm');

    var data = new FormData();
    // put whatever you want to put through data.append([name], [value])

    var xhr = new XMLHttpRequest();
    xhr.open("POST", form.action);
    xhr.send(data); 
};

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签