【问题标题】:Getting form data without POST or GET in MVC在 MVC 中获取没有 POST 或 GET 的表单数据
【发布时间】:2013-06-03 23:40:44
【问题描述】:

我正在处理一个 MVC 4 项目。我在将表单数据从视图传递到控制器中的操作时遇到问题。我继承的视图已经有一个表单标签,所以我不能在其中嵌套其他表单标签。我对 ajax/javascript 不感兴趣,因为它需要很长时间才能加快速度。

我有一个显示用户详细信息以供编辑的局部视图。我有一个模型,它保存我显示的用户的值。例如:

 <input id="txtFirstName" type="text" name="FirstName" value="<%: Model.FirstName %>"/>

由于现有的表单标签,我无法使用 POST 或 GET。因此,如果可能的话,我想用我的文本框值覆盖我的模型实例,无论它们是否已更改,并将模型传递给我的操作:

<%= Model.FirstName = <FirstName value from textbox> %>
 ....
<%: Html.ActionLink("Save", "UserSave", "User", new {Model})%>

但我不知道如何获取每个文本框等的值。Page.Form.Field?要求。 ?

我知道这是一种丑陋的方式,而不是 MVC 应该工作的方式。但这是时间紧迫的时候之一,我需要一个黑客来完成它。所以,请不要用另一个问题来回答我的问题,比如你为什么不使用 Ajax 或 Razor 等。

谢谢

【问题讨论】:

  • 我认为您可能会对浏览器上运行的代码与服务器上运行的代码以及数据如何从一个到另一个传输感到困惑。
  • 不,我不是。我一直在使用不同的平台和语言传递表单数据,从在 Linux 的客户端使用 PERL 和 javascript,在服务器端使用 C/C++ 到今天使用 MVC。我对 MVC 比较陌生,尤其是模型的范围。所以请不要光顾我。
  • 很抱歉。您表达问题的方式似乎暗示您相信某人在浏览器中的文本控件中键入的数据可以发送到服务器以供 C# 代码访问,而无需使用 HTTP 请求。似乎至少还有一个人同意我的看法。您建议 Page.Form.Field 可以填充来自浏览器的值而不使用 GET 或 POST 是什么意思?
  • 我不知道我在说什么。已经很晚了,我已经抓住了救命稻草 :) 本质上,我需要退后一步,更深入地研究 MVC。

标签: html asp.net-mvc c#-4.0 asp.net-mvc-4


【解决方案1】:

要从客户端浏览器获取数据到服务器,您需要发出某种请求。无论是通过 POST 还是 GET、AJAX 与否,仍然需要发出请求 - 没有快速破解方法可以解决这个问题。

如果没有更多细节,很难给你任何答案,但是,我可以想到两种可能性。

  1. 在您的视图中创建一个新表单 - 您不能嵌套它们,但您可以 有多种形式。
  2. 如果您要在视图中更新的字段是 同样在现有形式中,您可以从您的 提交前将文本框添加到现有字段。

【讨论】:

  • 感谢 StanK 更加尊重的回答。看来我正在嵌套表单标签!我的母版页(由其他人编写)包含一个将 id 作为操作传递的表单(例如 action="700"),因此任何后续表单都将被嵌套。看来我需要复习一下 javascript 和 Ajax。
  • 我明白了。一种相对简单的技巧是使用一些 javascript 来更改表单的“action”属性以指向您实际想要调用的控制器操作 - 然后您可以像往常一样使用输入。这有点小技巧,理想情况下,您可以让其他人更改他们的母版页 - 他们肯定不需要将表单标签包裹在您的内容周围。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-21
  • 1970-01-01
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多