Я новичок на страницах Razor и мне нужна помощь.
У меня есть файл .CSHTML, который определяет страницу.Эта страница содержит несколько флажков для пользователя, чтобы проверить или снять флажок.Страница устанавливает состояния этих флажков в соответствии с используемой ими моделью представления.Однако, когда я нажимаю кнопку «Сохранить», приложение вылетает, говоря, что не может найти метод, который принимает 0 аргументов.Как мне сделать так, чтобы он возвращал viewmodel к моему методу сохранения ниже?Некоторые пути к файлам опущены из соображений конфиденциальности.
Я пытался использовать форму (как в примере) и установить обработчик на кнопку, которая заставила его перейти к несуществующей ссылке.Intellisene находит контроллер и метод, чтобы они были видны.
My View:
@model Models.MenuItemsViewModel
@{
ViewBag.Title = "Menus";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div class="jumbotron">
<h1 class="display-4">@ViewBag.Title</h1>
<p>here you can set values</p>
</div>
@using (Html.BeginForm("Save", "MenuItems", FormMethod.Post))
{
<h2>Menus</h2>
<table class="table">
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">Status</th>
</tr>
</thead>
<tbody>
<tr>
<td>
@Html.LabelFor(m => m.Schedule)
</td>
<td> @Html.CheckBoxFor(m => m.Schedule, new { @checked = Model.Schedule }) </td>
</tr>
<tr>
<td>
@Html.LabelFor(m => m.FAQ)
</td>
<td> @Html.CheckBoxFor(m => m.FAQ, new { @checked = Model.FAQ }) </td>
</tr>
</tbody>
</table>
<input type="submit" value="Save these values" class="btn btn-primary btn-block" />
}
Мой контроллер:
using System.Linq;
using System.Threading.Tasks;
using System.Web.Mvc;
using Models;
namespace Controllers
{
[RoutePrefix("menuItems")]
[Authorize(Roles = LoginController)]
public class MenuItemsController : Controller
{
private readonly AppContext context = new AppContext();
[Route("")]
public async Task<ActionResult> Index()
{
var menuItems = context.MenuItems.SingleOrDefault();
return View(new MenuItemsViewModel(menuItems));
}
[HttpPost] //I want to call this method when I press save!
public ActionResult Save(MenuItemsViewModel model)
{
var menuItems = context.MenuItems.SingleOrDefault();
if (menuItems == null)
{
ViewBag.Message = "Something went wrong";
}
model.UpdateFromViewModel(menuItems);
ViewBag.Message = "Information saved";
context.SaveChanges();
return RedirectToAction("Index");}
}
}
Я хочу обновить Viewmodel и отправить его в вызове метода Save, чтобы он мог сохранить его в базе данных.