【问题标题】:Need button click to handle action of controller [duplicate]需要单击按钮来处理控制器的动作[重复]
【发布时间】:2018-01-18 20:24:52
【问题描述】:

在我的控制器中,我有一个需要在单击按钮时执行的操作,我尝试使用 Url.Action 控件,但这不起作用。

到目前为止我得到了什么:

控制器代码:

 public ActionResult PendingBlogs()
    {
        OMSDataContext db = new OMSDataContext();

        var query = from a in db.BlogApprovals
                    select a;
        return View(query);
    }
    [HttpPost]
    public ActionResult PendingBlogs(BlogApproval blogap)
    {
        OMSDataContext db = new OMSDataContext();

        Blog b = new Blog
        {
            BlogTitle = blogap.BlogTitle,
            BlogContent = blogap.BlogContent,
            UserName = User.Identity.Name,
            Date = blogap.Date,
            IsApproved = true
        };
        db.Blogs.InsertOnSubmit(b);
        db.SubmitChanges();

        return View();

    }

视图中的按钮: PendingBlogs.cshtml:

 <td>
     <input type="button" value="Create" onclick="location.href='@Url.Action("PendingBlogs", "Admin")'" />
 </td>

当我点击按钮时,页面只是刷新,但表格没有更新。

【问题讨论】:

  • 你需要做一个表单post来点击Http post action方法。您当前的代码进行 GET 调用,该调用将命中第一个操作方法。p
  • 想想吧。调试它。你真的应该能够自己解决这个问题。打开浏览器的开发工具。您会看到它正在向您的端点发出 GET 请求。您有 GET 和 POST 操作。所以它可能没有击中你想要的那个。您需要提交表单或使用 AJAX 来执行正确的操作。
  • 不接受错误答案!

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


【解决方案1】:

我曾经遇到过同样的问题,当时我在 .cshtml 文件中缺少“form”。

<form asp-controller="Home" method="post">
<div class="row">
    <div class="col-md-3">
        <h2>Create New  Job</h2>
        <ul>
            <li>
                <input type="submit" name="answer" value="RunRegisterdJob" />
            </li>
        </ul>
    </div>
</div>
</form>

【讨论】:

  • 好的,我试过了,但它给了我一个“对象引用未设置为对象的实例”。 foreach 上的异常(模型中的 var 项)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-06
  • 2018-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-03
  • 1970-01-01
相关资源
最近更新 更多