wa.war Ответов: 1

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, и вы найдете множество примеров того, как это сделать.

1 Ответов

Рейтинг:
1

VICK

Мой 5.

Animesh Datta

Спасибо