Mvc-как передать модель из вида в контроллер при нажатии кнопки?
Смотреть
<pre lang="HTML">@model SendAFaxWeb.Models.Send //view start here <body> <div> <h2>Test Upload File</h2> <form action="@Url.Action("Index", "Home")" id="form" method="post" enctype="multipart/form-data"> @Html.AntiForgeryToken() <div class="form-group"> <label>Fax Number:</label> @Html.TextBoxFor(m => m.Recipients[0].Number) </div> <div class="form-group"> <label>Select File:</label> <input type="file" name="files" id="file" multiple="multiple" onchange="this.form.submit();" /> </div> <div> @if (Model != null) { foreach (var item in Model.Documents) { <li>FileName: @item.Name</li> } } </div> </form> <input type="submit" name="send" value="Send" id="btnSend" /> </div> </body>
Язык JavaScript
<script type="text/javascript"> $(document).ready(function () { $("#btnSend").click(function (e) { alert("button click"); e.preventDefault(); var model = @Html.Raw(Json.Encode(Model)) $.ajax({ type: 'post', url: '@Url.Action("Send", "Home")', data: JSON.stringify({ contact: model }), contentType: 'application/json; charset=utf-8', dataType: "json", success: function (data) { alert(data); } }); }); }); </script>
Контроллер
public ActionResult Send(Send contact) { //some code here }
Что я уже пробовал:
Я попытался передать модель с помощью javascript контроллеру, но она не работает. Я думаю, что что-то не так с моим javascript. Кто-нибудь может мне помочь?
F-ES Sitecore
Определить "не работает"?
Одна из проблем, которую я сразу вижу, заключается в том, что вы сериализуете данные в модели, как это происходит при загрузке страницы;
var model = @Html. Raw(Json.Кодирование (Модель))
Вы не сериализуете данные, которые находятся в форме при ее отправке.
Это довольно простой материал MVC, посмотрите учебники по вызову действий MVC через jQuery ajax, и вы найдете множество примеров того, как это сделать.