我有一个 Ajax.beginform 将 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>
我被困住了!
谢谢