Umbraco Как разобрать форму POST на поверхностный контроллер?

У меня есть Ajax.beginform, который POST ProductName на поверхностный контроллер, или, по крайней мере, это то, что я ищу. Никак не могу найти модель. Я могу передавать простые значения с помощью routeValues, но как передать контроллеру сложные объекты? Я получаю внутреннюю ошибку сервера 500 со следующим контроллером:

      public class NetShopController : RenderMvcController
    {
    
        public ActionResult AddProductForm(Product model)
        {

            var mod = model;// <-- Nothing in it and it returns a 500 error
            return PartialView("~/Views/Partials/NetShop/result.cshtml", new HtmlString(Session["test"].ToString()));

        }
    }

Ниже приведен мой вид, и, как вы можете видеть, я пытаюсь отправить только одно поле ввода с помощью Ajax.BeginForm.

      @inherits UmbracoViewPage<Product>
@using ContentModels = Umbraco.Web.PublishedModels;

@{ Layout = "master.cshtml"; }
<!-- for the section we want to show the shop header -->
@Html.Partial("~/Views/Partials/SectionHeader.cshtml", Model.Parent)

<section class="section">
    <div class="container">
        <div class="row">
            <div class="col-md-6">
                <div class="product-image-container">
                    <img class="product-image" src="@Model.Photos.Url()" alt="@Model.ProductName image" />
                </div>
            </div>
            <div class="col-md-6">
                <h1>@Model.ProductName</h1>
                <div class="product-price">@Model.Parent.GetProperty("DefaultCurrency").Value() @Model.Price.ToString("F")</div>
                <div class="product-teaser">@Model.Description</div>
                <div class="product-button">
                    @using (Ajax.BeginForm(actionName: "AddProductForm", controllerName: "NetShopBasketSurface", routeValues: new { product = Model }, ajaxOptions: new AjaxOptions()
                    {
                        UpdateTargetId = "form-result",
                        HttpMethod = "post",
                        InsertionMode = InsertionMode.Replace,
                        OnSuccess = "addProductForm.showResult",
                        OnFailure = "addProductForm.showResult"
                    }, htmlAttributes: new { id = "pform" }))
                    {
                        <div>
                            @Html.HiddenFor(m => m.ProductName)
                            <button class="product-submit button button--border--solid" type="submit" id="addProductButton">Tilføj til kurv</button>
                        </div> @*<button class="button button--border--solid">Tilføj til indkøbskurv</button>*@
                    }
                            </div>
                <div class="product-advantages">
                    @if (Model.Features != null)
                    {
                        foreach (var feature in Model.Features)
                        {
    <div class="product-advantage">
        <h4>@feature.GetProperty("featureName").Value()</h4>
        <h5>@feature.GetProperty("featureDetails").Value()</h5>
    </div>}
                    }
                </div>
            </div>
        </div>
    </div>
</section>
                <section class="section section--sand">
                    <div class="container">
                        <!-- todo: Check if grid is empty via a property value converter -->
                        @Html.GetGridHtml(Model, "bodyText", "bootstrap3-fluid")
                    </div>
                </section>


<div id="form-result"></div>

Я застрял!

Спасибо

0 ответов

Другие вопросы по тегам