我有一个剃刀视图,只需读取查询字符串值即可将参数传递给返回事物集合的类库,因此
@inherits UmbracoTemplatePage
@{
Layout = "LayoutDefaultView.cshtml";
}
@{
if (Request.QueryString["newCust"] == "true")
{
do stuff
}
我无法更改上面的代码,但我需要在上面的视图中创建新功能,这样我就可以将ID传递给另一个基于viewmodel的视图,比如
@using (Html.BeginUmbracoForm<NewSurfaceController>("newAction", FormMethod.Post, new {id = custId}))
我该怎么做?我知道这不是最佳做法,但这是一个快速修复,因为我无法更改任何遗留代码
答案 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>