Как передать объект с помощью помощника Ajax.BeginForm()

#ajax #asp.net-mvc #partial-views

#ajax #asp.net-mvc #частичные представления

Вопрос:

Я пытаюсь использовать Ajax.BeginForm для отправки сообщения обратно на сервер, и мне нужно дать имя форме, т. Е. Использовать параметр htmlAttributes . Для этого я использую следующую подпись:

 @using (Ajax.BeginForm("SendEmail", "Contacts", null, new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "sendMessageArea" }, new { Name = "sendEmail" }))
 

Этот код не работает, он обновляет всю страницу, и контроллер ожидает объект в качестве параметра:

public ActionResult SendEmail(Контакты контакты)

Вот представление:

 <div class="row">
<div class="large-12 columns" >
    @using (Ajax.BeginForm("SendEmail", "Contacts", null, new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "sendMessageArea" }, new { Name = "sendEmail" }))
    {
        <fieldset class="form-group">
            <legend>Leave a message</legend>
            <div class="panel">
                <div class="row">                    
                    <div class="large-offset-2 large-8 columns">                        
                            <div class="row">
                                <div class="large-2 columns">
                                    <div class="form-group">
                                        @Html.LabelFor(model => model.Name, new { @class = "control-label" })
                                    </div>
                                </div>
                                <div class="large-8 columns">                                    
                                    @Html.TextBox("Name", Model.Name, new { placeholder = "Your name..." })
                                    @Html.ValidationMessageFor(model => model.Name)
                                </div>
                                <div class="large-2 columns">
                                </div>
                            </div>
                            <div class="row">
                                <div class="large-2 columns">
                                    <div class="form-group">                                        
                                        @Html.LabelFor(model => model.EMail, new { @class = "control-label" })
                                    </div>
                                </div>
                                <div class="large-8 columns">
                                    <div class="form-group">
                                        @Html.TextBox("EMail", Model.EMail, new { placeholder = "Your email..." })
                                        @Html.ValidationMessageFor(model => model.EMail)
                                    </div>
                                </div>
                                <div class="large-2 columns">
                                </div>
                            </div>
                            <div class="row">
                                <div class="large-2 columns">
                                    <div class="form-group">
                                        @Html.LabelFor(model => model.Message, new { @class = "control-label" })
                                    </div>
                                </div>
                                <div class="large-8 columns">                                    
                                        @Html.TextArea("Message", Model.Message, new { placeholder = "Your message here...", @class = "comment-control", id = "message" })
                                        @Html.ValidationMessageFor(model => model.Message)                                    
                                </div>
                                <div class="large-2 columns">
                                </div>
                            </div>
                            <div class="row">
                                <div class="large-offset-8 large-3 columns">
                                    <input type='submit' style='position:absolute;top:0;left:-9999px;width:1px;height:1px' />
                                    <a class='submit-button' href="javascript:sendEmail.submit()">
                                        <span class='submit-button-inner'>Submit</span>
                                    </a>
                                </div>
                            </div>                        
                    </div>
                    <div class="large-2 columns">
                    </div>
                </div>
            </div>
        </fieldset>
    }
</div>
 

и частичное представление:

 <span class="success label">@Resources.Contacts.Index.SuccessSendMessage</span>
 

Я думаю, что проблема должна быть связана с параметром routeValues, потому что, если я использую простой пример без htmlAttributes и routeValues, он работает хорошо.
Есть предположения?

Комментарии:

1. Можете ли вы опубликовать свой полный код представления?

2. Я обновляю сообщение кодом представления