【问题标题】:How to post a form to an url in asp .net mvc3?如何在 asp .net mvc3 中将表单发布到 url?
【发布时间】:2012-09-13 18:52:39
【问题描述】:

我是 asp .net mvc3 的新手。我有一个要求,我将一个表单发布到一个 url 上说 "www.abc.com/asa" 。我在我的应用程序中添加了一个提交按钮。但是每次我单击按钮时,表单都会提交给相应的控制器。如何发布到我所需的网址?

【问题讨论】:

  • 我认为您最好的选择是通过 jquery 劫持表单发布,因为您总是必须按照约定通过控制器进行路由,或者您取消操作名和控制器参数。 Manatherin 上面的评论给出了这个解决方案所需的指针

标签: asp.net asp.net-mvc-3 forms post


【解决方案1】:

通常在 mvc 中我们遵循以下约定:

[httpGet] //default not to mention
public ActionResult Index()
{
    // Todo code here
}

[httpPost]
public ActionResult Index(FormCollection collection)
{
   // Form submit here, all form data available here
}

但在您的情况下,您可以在视图中写下以下内容:

@using (Html.BeginForm("ActionName", "Controller", "FormMethod", "HTML Attributes"))
{
   // Here Controller: it defines whose actionmethod need to be called when form get submitted.
}

前:

@using(Html.BeginForm(null, null, FormMethod.Post, new {@action="http://www.abc.com/asa"})
{
}

【讨论】:

  • darshin -重新阅读 OP。他明确提到他不想对控制器进行传统调用。我没有标记你,因为这是你的一个真正的错误,但我敢肯定,除非你编辑你的答案,否则你会这样做
  • @jimtollan:已编辑答案,如有错误请发表评论。感谢您吸引我的注意力。
【解决方案2】:

在这种情况下,我建议使用标准 html <form /> 标记,并在操作参数中使用适当的 url。

BeginForm 助手总是将动作和控制器作为参数——你不能使用标准的。

如果您愿意,您也可以定义自己的助手。如果这是一个更大的应用程序并且您将多次使用它,我会这样做。

【讨论】:

    【解决方案3】:
    <form action="www.abc.com/asa" method="POST">
       <legend>
         Foo
       </legend>
       <fieldset>
          <p>Fields</p>
       </fieldset>
    
       <input type="submit" name"submitForm" value="submitForm" />
    </form>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-11
      • 1970-01-01
      • 2012-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多