将表单添加到umbraco v6纯剃须刀视图中,以调用表面控制器操作传递ID

时间:2014-12-03 08:51:23

标签: c# asp.net-mvc razor umbraco

我有一个剃刀视图,只需读取查询字符串值即可将参数传递给返回事物集合的类库,因此

@inherits UmbracoTemplatePage
@{
    Layout = "LayoutDefaultView.cshtml";
}
@{ 
    if (Request.QueryString["newCust"] == "true")
    {
         do stuff
    }

我无法更改上面的代码,但我需要在上面的视图中创建新功能,这样我就可以将ID传递给另一个基于viewmodel的视图,比如

@using (Html.BeginUmbracoForm<NewSurfaceController>("newAction", FormMethod.Post, new {id = custId}))  

我该怎么做?我知道这不是最佳做法,但这是一个快速修复,因为我无法更改任何遗留代码

1 个答案:

答案 0 :(得分:0)

您走在正确的轨道上,看起来您只需要添加Surface Controller和新视图。

在现有视图中,您需要调用新控制器,所以

@using (Html.BeginUmbracoForm(
    "PerformSomeAction", 
    "MyNewController", 
    FormMethod.Post, 
    new { id = custId }))
{
    @* Your form code and submit button goes here *@
}

现在为控制器本身。我们必须继承Umbracos SurfaceController类。

public class MyNewController : Umbraco.Web.Mvc.SurfaceController
{
    [HttpPost]
    public ActionResult PerformSomeAction(int id)
    {
        var model = new MyNewModel()
        {
            Id = id
        };

        return View(model);
    }
}

然后,您可以为曲面控制器创建一个新视图,您可以将其用于强类型模型。

@model MyNewModel
@{
    Layout = null;
}

<h1>The ID is @Model.Id.ToString()</h1>