0

我正在尝试在 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> 

订单.cs:

public class Order
{
  public String Item { get; set; }
  public String Quantity { get; set; }

  public Order()
  {
  }

  public void Save()
  {
  }
}

我错过了什么?

任何帮助表示赞赏

4

2 回答 2

0

我认为默认模板没有 _PageStart.cshtml,因此除非您手动添加了一个指定布局的模板,否则您需要在页面中指定它。

问候

哈坎

于 2014-12-23T23:00:45.667 回答
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>
于 2014-12-25T09:57:30.870 回答