【问题标题】:Umbraco surface controller not submitting to backend with POSTUmbraco 表面控制器未通过 POST 提交到后端
【发布时间】:2017-10-09 12:23:33
【问题描述】:

我基本上有一个联系表格,我需要将其发布到我的 Umbraco 后端。前端看起来像这样:

using (Html.BeginUmbracoForm("HandleFormSubmit", "ContactForm", FormMethod.Post)) {
    <form>
        <input name="Name" type="text" />
        <button type="submit">Send</button>
    </form>
}

然后我在/Controllers/ContactFormController.cs 中有一个表面控制器,看起来像:

public class ContactFormController : SurfaceController {
    // GET: ContactForm
    public ActionResult Index() {
        return PartialView("ContactForm", new ContactForm());
    }

    [HttpPost]
    public ActionResult HandleFormSubmit(ContactForm model) {
        return RedirectToCurrentUmbracoPage();
    }
}

我正在尝试使用HandleFormSubmit POST 方法。 GET 方法有效(断点证明了这一点)。无论我做什么,我都无法让它达到这种方法。我看了很多指南,所有的指南似乎都和这个完全一样。

POST数据如下:

url: /contact-us/
data: name="Test"
Content-Type: multipart/form-data

我在这里做错了什么?使用 Umbraco 7.6.6

【问题讨论】:

  • 帖子的网址应该类似于/umbraco/sufrace/ContactForm/HandleFormSubmit。你有/contact-us/ 的自定义路由吗?
  • @DZL 我的 RouteConfig.cs 没有被修改过。这是 Umbraco,所以 Umbraco 会帮我处理。
  • 是的,但是你需要发帖到/umbraco/sufrace/ContactForm/HandleFormSubmit而不是/contact-us/
  • @DZL 如何告诉 Html.BeginUmbracoForm?
  • 在浏览器中查看源码会产生什么?

标签: umbraco umbraco7 surface-controller


【解决方案1】:

您的问题是您在表单中呈现表单。

您的视图应如下所示:

using (Html.BeginUmbracoForm("HandleFormSubmit", "ContactForm", FormMethod.Post)) {
    <input name="Name" type="text" />
    <button type="submit">Send</button>
}

它应该可以工作。

【讨论】:

  • 奇怪的是它如何生成相同的 HTML(据我所知),但它现在可以工作了,哈哈。再次感谢!
  • 当你在表单中有表单时,它不是同一个 HTML ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-05
  • 2021-10-22
相关资源
最近更新 更多