Когда я отправляю форму, метод контроллера получает нулевое модальное значение.У меня есть представление Подробности, которое вызывает метод CreateNewProduct из другого контроллера для нажатия кнопки.CreateNewProduct вызывает либо представление SharedProduct, либо метод перенаправления на действие для представления сведений.У меня есть кнопка отправки в представлении SharedProduct, которая получает нулевую модель при отправке формы.Могу ли я получить помощника здесь?Спасибо!
Подробное представление
@model DetailsModel
@foreach (var productTemplate in Model.Products)
{
@Html.ActionLink("Add New Product", "CreateNewProduct", "NewProductTemplate", new { productTemplate.productId, productTemplate.customerId}, new { @class = "btn btn-sm btn-primary" })
@Html.ActionLink("Remove Product", "Delete", "ProductTemplate", new { productTemplate.productId}, new { @class = "btn btn-sm btn-primary" })
}
Контроллер ProdcutTemplate
public ActionResult Details()
{
var productTemplate = _productTemplateService.GetAllProducts(User);
return View(new DetailsModel
{
ProductTemplate = productTemplate,
});
}
public ActionResult Delete(Guid productId)
{
var productTemplate = _productTemplateService.Delete(productId , User);
return View("Details",new DetailsModel
{
ProductTemplate = productTemplate,
});
}
Модель SharedModel и DetailsModel
public class SharedModel
{
public IEnumerable<SharedProductTemplateListItemDto> SharedProducts {get; set; }
}
public class DetailsModel
{
public IEnumerable<ProductTemplateListItemDto> Products{get; set; }
}
NewProductTemplate Controller Code
public ActionResult CreateNewProduct(Guid productId, Guid customerId)
{
var sharedProduct = _newProductTemplateService.GetSharedProductCustomer(productId);
var _finalSharedProducts = (sharedProduct.Any(t => t.productId != productId));
if (_finalSharedProducts)
{
var sharedProdctTemplate = _newProductTemplateService.GetSharedProduct(productId);
return View("SharedProduct", new SharedModel
{
SharedProducts = sharedProdctTemplate
});
}
else
{
_productTemplateService.CreateNewProductOne(productId);
return RedirectToAction("Details", "ProductTemplate");
}
}
public ActionResult ShareProduct (SharedModel shareModel)
{
//Access ShareProducts from shareModel
return RedirectToAction("Details", "ProductTemplate");
}
Просмотр - SharedProduct.view
@model SharedModel
@using (Html.BeginForm("ShareProduct", "NewProductTemplate", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="flex-row">
<div class="col-6">
<div class="d-flex flex-row">
<div class="p-2">Product ID</div>
<div class="p-2">Product Types</div>
<div class="p-2">Status</div>
</div>
@for (var i = 0; i < Model.SharedProducts.Count(); i++)
{
@Html.HiddenFor(model => model.SharedProducts.ElementAt(i).ProductId)
@Html.HiddenFor(model => model.SharedProducts.ElementAt(i).CustomerId)
@Html.HiddenFor(model => model.SharedProducts.ElementAt(i).ProductType)
@Html.HiddenFor(model => model.SharedProducts.ElementAt(i).StatusCode)
@Html.HiddenFor(model => model.SharedProducts.ElementAt(i).IsShared)
<div class="d-flex flex-row">
<div class="p-2">@Html.DisplayFor(model => model.SharedProducts.ElementAt(i).ProductId)</div>
<div class="p-2">@Html.DisplayFor(model => model.SharedProducts.ElementAt(i).ProductType)</div>
<div class="p-2">@Html.DisplayFor(model => model.SharedProducts.ElementAt(i).StatusCode)</div>
@if (Model.SharedProducts.ElementAt(i).StatusCode == VersionStatus.PUBLISHED)
{
<div class="p-2">@Html.EditorFor(m => m.SharedProducts.ElementAt(i).IsShared)</div>
}
</div>
}
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Save" class="btn btn-sm btn-primary" />
</div>
</div>
</div>