我正在尝试在Piranha CMS 2.2.4中实现自定义表单。表单呈现为新页面,仅显示表单。我的目标是表单将juist呈现为普通的内容页面。
我的代码片段: Index.cmshtml
@inherits Piranha.WebPages.SinglePage<Piranha.Models.PageModel>
@{
var msg = "";
if (IsPost)
{
var order = new Order()
{
Item = Request["Item"],
Quantity = Request["Quantity"]
};
order.Save();
msg = "Your order is saved!";
}
}
@if (!String.IsNullOrEmpty(msg))
{
<p>@msg</p>
}
<div>
<form method="post">
<input name="Item" />
<input name="Quantity" />
<button type="submit">Let's buy it!</button>
</form>
</div>
Order.cs:
public class Order
{
public String Item { get; set; }
public String Quantity { get; set; }
public Order()
{
}
public void Save()
{
}
}
我缺少什么?
感谢任何帮助
答案 0 :(得分:0)
我认为默认模板不具有_PageStart.cshtml,因此除非您手动指定布局,否则需要在页面中指定它。
此致
哈坎
答案 1 :(得分:0)
你救了我的一天!
我修改了表单并且它有效。我对MVC很新,我相信有更简洁的方法可以达到相同的效果。但是现在它有效。 谢谢!
新代码: @inherits Piranha.WebPages.SinglePage
@{
//this is the main 'trick'
Layout = "~/Content/_Layout.cshtml";
Page.Title = Model.Page.Title;
}
<div>
<form method="post">
<input name="Item" />
<input name="Quantity" />
<button type="submit">Let's buy it!</button>
</form>
</div>
<div class="content">
<div class="main">
<h4>@Model.Page.Title</h4>
//@Model.Regions.Content
@{
var msg = "";
if (IsPost)
{
var order = new Order()
{
Item = Request["Item"],
Quantity = Request["Quantity"]
};
order.Save();
msg = "Your order is saved!";
}
}
@if (!String.IsNullOrEmpty(msg))
{
<p>@msg</p>
}
</div>
<div class="sidebar">
@RenderPage("~/Shared/Sidebar.cshtml")
</div>
</div>