asp.net-mvc – 在MVC视图中,如果在表单标记中没有指定,则调用哪个控制器和方法?

我有一个继承的MVC项目.在视图上,BeginForm标记中没有指定路由(控制器和操作).视图呈现正确,因此我假设它正在选择认路由.

我的问题是,如果没有指定路线,它是如何知道使用的路线?这里的最佳做法是:您是指定路线还是让它认?

所以视图是Views / Config / WorkCodes.cshtml,标签

Html.BeginForm()

它进入控制器ConfigController.cs并调用操作WorkCodes().如果我正在做这个项目,我会写的

Html.BeginForm("WorkCodes","Config",FormMethod.Post)

MVC如何知道使用哪个控制器和操作而不指定它?

WorkCodes.cshtml

@{
  ViewBag.Title = "Work Codes";
}

@using (Html.BeginForm())
{
<div>
    <table style="width: 100%;" class="trHoverHighlight">
        <tbody>
            <tr>
                <td>
                    <br />
                    <div>
                        <button id="buttonCreateNew" type="button">Add New</button>&nbsp;
                        <button id="buttonReturn" type="button">Return</button>
                    </div>

                </td>
            </tr>
        </tbody>
    </table>
</div>

}

ConfigController.cs

public ActionResult WorkCodes()
    {
        return View(Rep.GetWorkAll(true));
    }

这是从另一个视图中调用视图的位置:

@foreach (var itm in (List<string>)ViewBag.ListObjects)
                {
                        <li>
                            <a href="../Config/@itm">Work Codes</a>
                        </li>  
                }

解决方法

View是从执行HTTP GET到WorkCodes控制器操作生成的,因此认情况下,在该视图中生成的表单会对具有相同名称的控制器操作执行HTTP POST.

Here’s the MSDN docs.

BeginForm(HtmlHelper) Writes an opening tag to the response. The form uses the POST method,and the request is processed by the action method for the view.

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....