Ниже контроллер:MVC метод общественного действия не был найден на контроллере
[HttpPost]
public ActionResult Save(HelloWorldMvcApp.ProductData model, string[] imgToDelete)
{
return Json(new { success = true });
}
И вот Вид:
@model HelloWorldMvcApp.ProductData model
@{
ViewBag.Title = "Edit";
Layout = "~/Views/Shared/_SharedLayout.cshtml";
}
<h2>Edit</h2>
@using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "divProductData", OnSuccess = "hideModal", Url = Html.Action("Save").ToHtmlString() }))
{
<div id="divProductData">
<table>
<tr>
<td>
@Html.HiddenFor(a => a.id)
</td>
<td>
@Html.TextBoxFor(a => a.productDesc)
</td>
</tr>
<tr>
@foreach (string path in Model.picture.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries))
{
<td>
<input type="checkbox" name="imgToDelete" value="@path">
<br />
<img src='~/Images/Product/@path' />
</td>
}
</tr>
</table>
</div>
}
@section scripts{
<script>
function hideModal() {
$('.modal').modal('hide');
$('body').removeClass('modal-open');
$('.modal-backdrop').remove();
}
</script>
}
Существует исключение брошено @using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "divProductData", OnSuccess = "hideModal", Url = Html.Action("Save").ToHtmlString() }))
:
{«Открытый метод действия« Сохранить »не найден на контроллере 'HelloWorldMvcApp.ProductDataController' . "}
Вот скрипка для кода: https://dotnetfiddle.net/OLEq4o
Как исправить эту ошибку?
Я пытался использовать Ajax.BeginForm вместо Html.BeginForm, поскольку эта страница отображается внутри Bootstrap Модальные и после некоторых исследований, я не могу вызвать функцию «hideModal», если я использую Html.BeginForm
Close modal window containing ASP MVC Ajax form
Пожалуйста, поправьте меня, если я ошибаюсь
Если вы желая, чтобы создать URL, то его '@ Url.Action ("Сохранить")', а не '@ Html.Action ("Сохранить")' - 'Html.Action()' называет метод и отображает частичный вид, возвращаемый методом. –