Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
Html 在控制器类中找不到HttpPost方法_Html_Entity Framework_Asp.net Mvc 4 - Fatal编程技术网

Html 在控制器类中找不到HttpPost方法

Html 在控制器类中找不到HttpPost方法,html,entity-framework,asp.net-mvc-4,Html,Entity Framework,Asp.net Mvc 4,我有一个html表单,它使用HTTP.Post与控制器类中的方法进行对话。我没有表示此方法的特定视图,只有一个没有相对cshtml视图类的HttpPostActionResult。我调用此方法的代码是: @using (Html.BeginForm("SaveCallout", "SaveCallout")) { <div class="editor-field"> @Html.DropDownListFor(m => m.ClientId, new

我有一个html表单,它使用HTTP.Post与控制器类中的方法进行对话。我没有表示此方法的特定视图,只有一个没有相对cshtml视图类的HttpPostActionResult。我调用此方法的代码是:

@using (Html.BeginForm("SaveCallout", "SaveCallout"))
{  
    <div class="editor-field">
        @Html.DropDownListFor(m => m.ClientId, new SelectList(Model.Clients, "ClientId", "Name"))
        @Html.ValidationMessageFor(model => model.ClientId)
    </div>
    <div class="editor-label">
        @Html.LabelFor(model => model.Description)
    </div>
    <div class="editor-field">
        @Html.TextAreaFor(model => model.Description, new { @id = "descriptionText" })
        @Html.ValidationMessageFor(model => model.Description)
    </div>
    <input class="btn btn-primary btn-large" style="float: left; margin-right: 10px;" type="submit" value="Create Callout" />
        <a class="btn btn-primary btn-large" href="@Url.Action("EmptyThisCallout", "Callout", null)" id="EmptyCart" style="float: left;">Clear Callout</a>
}
    [HttpPost]
    public ActionResult SaveCallout(CalloutViewModel viewModel)
    {
        var Callout = new Callout();
        TryUpdateModel(Callout);
        try
        {
            Callout.ClientId = viewModel.ClientId;

            Callout.CalloutDate = DateTime.Now;
            //Save invoice
            proent.Callouts.Add(Callout);
            proent.SaveChanges();
            //Process the invoice
            var tempCallout = CalloutLogic.GetCallout(this.HttpContext);
            tempCallout.CreateCallout(Callout);

            return RedirectToAction("Complete", new { id = Callout.CalloutId });
        }
        catch
        {
            //Invalid - redisplay with errors
            return View(Callout);
        }
    }
这在以前的类似环境中工作得非常完美,但现在我收到错误消息“未找到视图‘SaveCallout’或其主视图,或者没有视图引擎支持搜索的位置”。我知道它正在寻找一个视图,但我以前从未需要过这个视图


有人能看出我做错了什么吗?也许我需要发布更多的代码?

您所做的更改是
返回视图(Callout)
捕获中

返回视图(…)
在不提供视图名称的情况下搜索与操作同名的视图。如果是有意的,你应该在
Views->SaveCallout->SaveCallout.cshtml
上放一个视图,但我认为不是

我不知道你是从什么角度看的
HttpPost
。让它被称为
Foo
。如果要再次返回到
Foo
视图,应执行以下操作:

catch(...)
{
    return View("Foo", Callout);
}

定义了
SaveCallout
操作的控制器类名是什么?为什么控制器名称
SaveCallout
与操作后名称相同
BeginForm(“SaveCallout”、“SaveCallout”)
我只是好奇。SaveCalloutController是控制器类的名称。我不知道为什么我会这样做,这在当时是有意义的,正如我之前所说的,在我改变某些东西之前,它一直在起作用,但我不确定是什么!