Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在MVC视图中,如果表单标记中未指定任何控制器和方法,则调用哪个控制器和方法?_Asp.net Mvc_Asp.net Mvc 4_Razor_Html Helper - Fatal编程技术网

Asp.net mvc 在MVC视图中,如果表单标记中未指定任何控制器和方法,则调用哪个控制器和方法?

Asp.net mvc 在MVC视图中,如果表单标记中未指定任何控制器和方法,则调用哪个控制器和方法?,asp.net-mvc,asp.net-mvc-4,razor,html-helper,Asp.net Mvc,Asp.net Mvc 4,Razor,Html Helper,我继承了一个MVC项目。在视图上,BeginForm标记中没有指定路由(控制器和操作)。视图渲染正确,因此我假设它正在选择默认路线 我的问题是,如果没有指定路线,它如何知道使用哪条路线?这里的最佳实践是什么:应该指定路由还是让它默认 因此,视图是Views/Config/WorkCodes.cshtml,标记是 Html.BeginForm() 它转到控制器ConfigController.cs并调用操作工作代码()。如果我在做这个项目,我会写 Html.BeginForm("WorkCode

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

我的问题是,如果没有指定路线,它如何知道使用哪条路线?这里的最佳实践是什么:应该指定路由还是让它默认

因此,视图是Views/Config/WorkCodes.cshtml,标记是

Html.BeginForm()
它转到控制器ConfigController.cs并调用操作工作代码()。如果我在做这个项目,我会写

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>
以下是在另一个视图中调用视图的位置:

                @foreach (var itm in (List<string>)ViewBag.ListObjects)
                {
                        <li>
                            <a href="../Config/@itm">Work Codes</a>
                        </li>  
                }
@foreach(列表)ViewBag.ListObjects中的变量itm)
{
  • }
    视图是通过执行
    HTTP GET
    WorkCodes
    控制器操作生成的,因此默认情况下,在该视图中生成的表单对同名控制器操作执行
    HTTP POST

    BeginForm(HtmlHelper)将开始标记写入响应。 表单使用POST方法,请求由 视图的操作方法


    默认的
    FormMethod
    FormMethod.Post
    ,默认的控制器和操作名称是(从GET方法)生成视图的名称。那么,这方面的最佳实践是什么?指定路由还是不指定路由?不指定值意味着代码更少,也意味着在键入动作和控制器名称的魔法字符串时不能输入错误。如果您不是在已映射到视图的默认位置(controller\action)之外的某个位置进行路由,通常不会指定。有时,您可能希望在给定的post上路由到不同的控制器/操作,此时,可以专门添加路由。
                    @foreach (var itm in (List<string>)ViewBag.ListObjects)
                    {
                            <li>
                                <a href="../Config/@itm">Work Codes</a>
                            </li>  
                    }