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

本文关键字:调用 ID 操作 控制器 表面 添加 表单 umbraco v6 视图 剃须刀 | 更新日期: 2023-09-27 18:32:58

我有一个 razor 视图,它只是读取查询字符串值以将参数传递给返回事物集合的类库,因此

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

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

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

我该怎么做? 我知道这不是最佳实践,但这是一个快速解决方案,因为我无法更改任何遗留代码

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

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

在现有视图中,需要调用新控制器,因此

@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>