【问题标题】:MVC Razor form button not calling controller specifiedMVC Razor 表单按钮未调用指定的控制器
【发布时间】:2019-01-28 04:31:37
【问题描述】:

所以在我看来,我有:

<div id="createProductModal" class="modal fade" tabindex="-1" role="dialog">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Create Product</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">
                    @using (Html.BeginForm("Create", "Product", FormMethod.Post, new { id = "createProductForm", @class = "form-horizontal"}))
                    {
                        <div class="form-group">
                            <div class="col-md-4">
                                @Html.LabelFor(m => Model.Product.Name, new { @class = "control-label" })
                            </div>
                            <div class="col-sm-8">
                                @Html.TextBoxFor(m => Model.Product.Name, new { @class = "form-control" })
                            </div>
                        </div>

                        <div class="form-group">
                            <div class="col-md-4">
                                @Html.LabelFor(m => Model.Product.IsActive, new { @class = "control-label" })
                            </div>
                            <div class="col-sm-8">
                                @Html.CheckBoxFor(m => Model.Product.IsActive, new { @class = "form-control" })
                            </div>
                        </div>
                    }
            </div>
            <div class="modal-footer">  
                <button type="button" class="btn btn-primary" data-dismiss="modal" onclick="$('#createProductForm').submit();">Add product</button>
                <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
            </div>
        </div>
    </div>
</div>

然后在我的ProductsController 中添加了如下操作:

[HttpPost]
public ActionResult Create(Product product)
{
   return View();
}

但由于某种原因,当单击提交时,它会将我重定向到此 URL:

http://localhost/Product/Create

并像这样抛出 404 错误:

The resource cannot be found.

我没有在路由配置中定义路由,这应该没关系吗?

有人明白我做错了什么吗?

【问题讨论】:

    标签: c# asp.net-mvc razor


    【解决方案1】:

    Html.BeginForm的第二个参数是控制器名称。假设你有一个ProductsController,而不是

    Html.BeginForm("Create", "Product", ...
    

    试试

    Html.BeginForm("Create", "Products"
    

    查看FormExtensions.BeginForm

    【讨论】:

    • 哇,我不敢相信我错过了。这就提出了另一个问题,我对控制器的命名约定是否正确?即它应该被称为 ProductController 而不是 ProductsController?该页面是显示产品的集合,因此是“s”
    猜你喜欢
    • 1970-01-01
    • 2013-10-03
    • 2019-03-24
    • 1970-01-01
    • 2018-11-26
    • 2013-02-16
    • 1970-01-01
    • 2018-08-24
    • 2015-04-16
    相关资源
    最近更新 更多