2014-04-10 29 views
4

我劫持了Umbraco 7.1的路由,並且由於某種原因,當按下提交按鈕時,我的HttpPost沒有觸發。任何關於這是爲什麼的輸入?當按下發送按鈕時會發生回發,但在HttpPost中放置一個斷點時,它永遠不會被觸發。被劫持的Umbraco HttpPost行動沒有​​觸發

下面是我的代碼片段,標記後面跟着控制器。

@inherits UmbracoViewPage 
@{ 
    Layout = "Layout.cshtml"; 
} 
@using (Html.BeginForm()) { 
    @Html.AntiForgeryToken() 
    @Html.TextAreaFor(m => m.Message) 
     < i n p u t type="submit" value="Send" />  



     @Html.ValidationMessageFor(m => m.Message) 
</div> 
} 

public ActionResult Index(ManageMessageId? smess) 
{ 
    var errorModel = new ErrorModel(); 
    ... 
return CurrentTemplate(errorModel); 
} 
[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Index(ErrorModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     ... 
    } 

return View(); 
} 

回答

1

假設您使用的是SurfaceControllers,您希望按如下方式創建表單。注意你如何創建表單的變化,以及如何在通用和參數匹配,表面控制器:

@using (Html.BeginUmbracoForm<MyController>("Index")) 
{ 
} 

你的控制器看起來應該是這樣的:

public class MyController : SurfaceController 
{ 
    public ActionResult Index(ManageMessageId? smess) 
    { 
     var errorModel = new ErrorModel(); 
     ... 
     return CurrentTemplate(errorModel); 
    } 

    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Index(ErrorModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      ... 
     } 

     return View(); 
    } 
}