【问题标题】:MVC: Retrieving form values after submittingMVC:提交后检索表单值
【发布时间】:2009-10-14 05:41:05
【问题描述】:

我在对话框上有一个表单,如下所示:

<form action="../ControlerFunction">
    <input type=text id="id1"/>
    <input type=text id="id2"/>
    <button type="submit"> OK </button>
    <button type="button" class="close"> Cancel </button>
</form>

提交表单后,它会触发我的控制器功能,但我如何检索两个文本框的值?

当我将表单操作更改为:

<form action="JavaScriptFunction();">
or:
<form action="JavaScriptFunction();return false;">

我的 JavaScript 在同一页面上:

function JavaScriptFunction()
{
    alert("Hi!");
}

它没有命中函数。我错过了什么吗?

【问题讨论】:

    标签: c# .net javascript asp.net-mvc


    【解决方案1】:

    在您的控制器中添加另一个接受 HTTP POST 并接受表单集合的操作方法。

    喜欢:

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult ControllerFunction(FormCollection collection)
    

    善良,

    丹

    【讨论】:

    • 嗨,丹。当我按照您的建议执行操作时,找不到“找不到资源。”的功能。当我拿走 AcceptVerbs(HttpVerbs.Post) 部分时,它确实命中了函数,但 collection.count = 0!
    • 我会将 POST 方法添加到您的表单标签中,看看是否有相同的效果。善良,D
    【解决方案2】:

    正确的html表单标签语法:

    <form method="post" action="/controller/method/" onsubmit="yourJSFunction();">
    
    ...
    

    这适合所有服务器端语言和技术。

    【讨论】:

      【解决方案3】:

      尝试先考虑这一点:

      1. FORM Tag 需要方法(POST 或 GET);
      2. 您的 INPUT 标签没有名称 将用于的属性 访问值。

      附加代码:

      <form name="form1" method="POST" onSubmit="JavaScriptFunction(); return false;">
              <input type=text id="id1" name="id1"/>
              <input type=text id="id2" name="id2"/>
              <button type="submit"> OK </button>
              <button type="button" class="close"> Cancel </button>
      </form>
      

      javascript:

      function JavaScriptFunction()
      {
          var id1Text = document.form1.elements["id1"].value; //get the value of id1
          var id2Text = document.form1.elements["id2"].value; //get the value of id2
          //do whatever you want here.
      }
      

      【讨论】:

      • 效果很好。那么我的问题是,我在提交时尝试调用 JavaScript 函数以便我可以使用 Ajax 回发到服务器?
      • 哦,对不起,我误解了你的问题。稍后我会尝试发布另一个答案。
      【解决方案4】:

      继续@Daniel。

      您可以使用 MyAction[FormCollection 集合],然后从集合对象中提取您的值。

      或者,如果您有一个传递给视图的模型,您可以使用 TryUpdateModel() 使用表单中的值来适当地分配您的模型。

      如果您需要更多,请发表评论,我会添加代码。

      现在要回家了,所以在我与交通拥堵时会有所延误。 :)

      哦,欢迎来到 SO。

      【讨论】:

        【解决方案5】:

        我想回答你的第一个问题。

        如何获取两个文本框的值?

        Daniel Elliot给出了一个答案。
        在为输入标签提供与 id 属性值相同的名称属性后,您可以将这些值作为参数访问到您的操作方法。

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult ControllerFunction(String id1, String id2)
        

        Sergei回答了你关于java script的第二个问题

        【讨论】:

          【解决方案6】:
          <form name="form1" method="POST" onSubmit="JavaScriptFunction(); return false;">
                  <input type=text id="id1" name="id1"/>
                  <input type=text id="id2" name="id2"/>
                  <button type="submit"> OK </button>
                  <button type="button" class="close"> Cancel </button>
          </form>
          

          javascript:

          function JavaScriptFunction()
          {
              var id1Text = document.form1.elements["id1"].value; //get the value of id1
              var id2Text = document.form1.elements["id2"].value; //get the value of id2
              //do whatever you want here.
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-12-01
            • 2015-05-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多