Dim*_*ple 3 c# asp.net-mvc umbraco
我在 中设置了文档类型Umbraco,并为此文档类型创建了自定义控制器和模型。
自定义控制器继承自:RenderMvcController类,视图通过@inherits Umbraco.Web.Mvc.UmbracoViewPage<com.something.model>
这一切都适用于任何 HttpGet 请求。但是,一旦我想使用@using 将表单发回控制器(Html.BeginUmbracoForm("SomeAction", "SomeController", null, new { @class = "some-class" }))
我收到以下错误消息:在控制器名称 SomeController 的 RouteTable 中找不到 Surface 控制器路由
从我能够找到的所有文档中,当涉及到表单帖子时,它总是指 SurfaceControllers。有没有办法更改路由,以便它可以发布到我的自定义控制器,而不是从SurfaceController类继承的另一个控制器?
如果要以这种方式发布表单,则需要两个控制器。一个用于继承自MvcRenderController(如您已经拥有的)的文档类型,第二个用于继承自SurfaceController.
表面控制器只需要一个 POST 操作来执行以下操作之一:
// e.g. if modelstate is invalid
return CurrentUmbracoPage();
// redirecting back to original page after a successful post
return RedirectToCurrentUmbracoPage();
// Redirecting to another page after a successful post
return RedirectToUmbracoPage(12345)
Run Code Online (Sandbox Code Playgroud)
这取自此处的文档:http : //our.umbraco.org/documentation/Reference/Templating/Mvc/forms
严格来说,初始文档类型控制器在这种情况下不是必需的,因为它在表单的发布中没有作用。
如果你想直接发布到自定义控制器,那么你不应该使用Html.BeginUmbracoForm,你应该直接发布到当前的 URL。这里的复杂之处在于,将模型绑定为后期操作的参数有点棘手。您的视图模型必须RenderModel通过以下方式继承:
public class BaseModel : RenderModel
{
public BaseModel() :
base(UmbracoContext.Current.PublishedContentRequest.PublishedContent) { }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4348 次 |
| 最近记录: |