0
我有一个使用HTTP.Post与控制器类中的方法对话的html表单。我没有表示这种方法的特定视图,只是一个没有相对cshtml视图类的HttpPost ActionResult。我的代码调用此方法是:在控制器类中找不到HttpPost方法
@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 '或其主人没有被发现或没有视图引擎支持搜索的位置“。我知道它正在寻找一个视图,但我从未需要这个过程。
任何人都可以看到我做错了什么?也许我需要发布更多我的代码?
什么是控制器类的名称,其中'SaveCallout'操作被定义? –
为什么你的控制器名称为'SaveCallout'与后动作名称相同? 'BeginForm(“SaveCallout”,“SaveCallout”)'我只是好奇。 – Win
SaveCalloutController是控制器类的名称。我不确定为什么我会这样做,这在当时是有道理的,正如我之前说过的,它曾经运行起来直到我改变了一些东西,但我不确定是什么! –