В моем ASP.net MVC View У меня есть раскрывающийся список, который я хочу получить, чтобы получить подробную информацию о выборе и асинхронно обновить div. Мой ASPX выглядит следующим образом:ASP.net MVC Routing on Postback
<% using (Html.BeginForm("Index", "Portal", FormMethod.Post, new { id = "TheForm" }))
{%>
<h2>Index</h2>
<% using (Ajax.BeginForm("Details", new AjaxOptions { UpdateTargetId = "mpkResults" }))
{ %>
<%=Html.DropDownList("Docs", (IEnumerable<SelectListItem>)ViewData["Docs"],
new { onchange = "document.getElementById('TheForm').submit();" })%>
<p><input type="submit" value="Details" /></p>
<% } %>
<div id="mpkResults" style="margin:10px 0px 0px 0px;"></div> ...
The OnChange пожары события правильно при выборе выпадающего списка, но вместо метода Подробности в моем коде позади обжига, она попадет мой метод Index. Почему метод детали не попадает в событие onchange? Мой метод Подробности() в контроллере:
public ActionResult Details()
{
... < It never gets here, just goes to the index() method
}
Это немного расстраивает прямо сейчас, так как я уверен, что это просто ошибка, но не уверен, что это могло быть. Я посмотрел на источник моей странице и достаточно точно, форма выглядит, как она должна быть маршрутизации к Подробности действий:
<form action="/Portal/Details" method="post" ...
Любая помощь будет оценена.
Спасибо, Федор, я упустил это, хороший улов! Как указать идентификатор формы в Ajax.BeginForm()? Я не вижу в качестве параметра ... –
Используйте перегрузку, которая имеет аргумент 'htmlAttributes', так же, как вы делаете с' Html.BeginForm() '. Если бы мой ответ помог вам, не могли бы вы подумать о его принятии? –
Fyodor, я нашел тот, который имел этот параметр, и использовал <% using (Ajax.BeginForm («Подробности», «», новые AjaxOptions {UpdateTargetId = "mpkResults"}, новый {id = "SubForm"})) {%> <% = Html.DropDownList («Документы», (IEnumerable) ViewData ["Docs"], new {onchange = "document.getElementById ('SubForm'). Submit();"})%> Он генерирует правильный HTML теперь с помощью «SubForm», но метод Index() все еще вызывается. Я с радостью помету ваш, как ответ, но хотел бы, чтобы метод Details получил выполнение, то есть подтверждение того, что оно работает –