我搜索了所有我能找到的可用教程,但我仍然无法使用 Umbraco Surface 控制器。我创建了一个基本的 Surface Controller 示例,该示例可以正常工作,但存在一些问题。到目前为止,这是我的代码,需要遵循的问题:
联系formModel1.cs:
public class ContactFormModel1
{
public string Email { get; set; }
public string Name { get; set; }
public string HoneyPot { get; set; }
public string Title { get; set; }
public string Last { get; set; }
public string First { get; set; }
public string Addr { get; set; }
public string Phone { get; set; }
public string Time { get; set; }
public string Comment { get; set; }
}
ContactSurfaceController.cs:
public class ContactSurfaceController : Umbraco.Web.Mvc.SurfaceController
{
public ActionResult Index()
{
return Content("this is some test content...");
}
[HttpGet]
[ActionName("ContactForm")]
public ActionResult ContactFormGet(ContactFormModel1 model)
{
return PartialView("~/Views/ContactSurface/Contact1.cshtml", model);
}
[HttpPost]
[ActionName("ContactForm")]
public ActionResult ContactFormPost(ContactFormModel1 model)
{
// Return the form, just append some exclamation points to the email address
model.Email += "!!!!";
return ContactFormGet(model);
}
public ActionResult SayOK(ContactFormModel1 model)
{
return Content("OK");
}
}
联系人.cshtml:
@model ContactFormModel1
@using (Html.BeginUmbracoForm<ContactSurfaceController>("ContactForm"))
{
@Html.EditorFor(x => Model)
<input type="submit" />
}
ContactMacroPartial.cshtml:
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@Html.Action("ContactForm", "ContactSurface")
我的问题:
我很确定这
return ContactFormGet(model)
在 ContactFormPost 方法中是错误的,但是我尝试过的所有其他方法都会引发错误。当我尝试
return RedirectToCurrentUmbracoPage()
时,我得到了Cannot find the Umbraco route definition in the route values, the request must be made in the context of an Umbraco request
。当我尝试
return CurrentUmbracoPage()
时,我得到了Can only use UmbracoPageResult in the context of an Http POST when using a SurfaceController form
。路由似乎工作正常(当我在 ContactFormPost 中放置一个断点时,调试器停在那里)。但是当表单返回时,我得到了我提交的确切值。我没看到!!!附加到电子邮件地址。(注意,这段代码仅用于调试,并不意味着做任何有用的事情)。
如何在控制器中调用“SayOK”方法?当我将 BeginUmbracoForm 方法更改为指向 SayOK 时,我仍然卡在 ContactFormPost 方法中。
我确定我错过了一些非常愚蠢的东西,但我无法终生解决这个问题。