加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 被劫持的Umbraco HttpPost动作没有开火

发布时间:2020-12-16 09:40:23 所属栏目:asp.Net 来源:网络整理
导读:我在Umbraco 7.1中劫持了这条路线,由于某种原因,当按下提交按钮时我的HttpPost没有被触发.有关为什么会这样的任何输入?按下发送时会发生回发,但是当在HttpPost中放置一个断点时,它永远不会被触发. 这是我的代码片段,控制器后面跟着标记. @inherits UmbracoV
我在Umbraco 7.1中劫持了这条路线,由于某种原因,当按下提交按钮时我的HttpPost没有被触发.有关为什么会这样的任何输入?按下发送时会发生回发,但是当在HttpPost中放置一个断点时,它永远不会被触发.

这是我的代码片段,控制器后面跟着标记.

@inherits UmbracoViewPage
@{
    Layout = "Layout.cshtml";
}
@using (Html.BeginForm()) {
  @Html.AntiForgeryToken()
   @Html.TextAreaFor(m => m.Message)
        < i n p u t type="submit" value="Send" />    



      @Html.ValidationMessageFor(m => m.Message)
 </div>
}

public ActionResult Index(ManageMessageId? smess)
{
  var errorModel = new ErrorModel();
  ...
 return CurrentTemplate(errorModel);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index(ErrorModel model)
{
  if (ModelState.IsValid)
  {
      ...
   }

 return View();
}

解决方法

假设您使用的是SurfaceControllers,则需要按如下方式创建表单.请注意创建表单的方式以及通用和参数与表面控制器的匹配方式的更改:

@using (Html.BeginUmbracoForm<MyController>("Index"))
{
}

您的控制器应该类似于:

public class MyController : SurfaceController
{
    public ActionResult Index(ManageMessageId? smess)
    {
        var errorModel = new ErrorModel();
        ...
        return CurrentTemplate(errorModel);
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Index(ErrorModel model)
    {
        if (ModelState.IsValid)
        {
            ...
        }

        return View();
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读