嘿.. 如何在更改事件的[HttpPost]方法中接收选定的Dropdownlist值?我总是在[HttpGet]方法中收到它。
<%: Html.DropDownListFor(model => model.TipTpa, ViewData[ArtikliKonstante.vdListaTipovaTPa] as IEnumerable<SelectListItem>,
new { onchange = "location.href='/Artikli/PromjenaTipa? p='+this.value"})%>
如果我将我的方法声明为[HttpPost],我会收到错误,该操作不存在。任何的想法? THX
答案 0 :(得分:3)
如果要调用正确的操作,则需要POST。在您的情况下,您只是重定向(window.location.href)发送GET请求。
因此,您可以将下拉列表放在表单中,并在选择更改时使用javascript提交表单:
<% using (Html.BeginForm("PromjenaTipa", "Artikli", FormMethod.Post, new { id = "myform" })) { %>
<%: Html.DropDownListFor(
model => model.TipTpa,
ViewData[ArtikliKonstante.vdListaTipovaTPa] as IEnumerable<SelectListItem>,
new { id = "tipTpa" }
) %>
<% } %>
然后在javascript中订阅更改事件(使用jquery的示例):
$(function() {
$('tipTpa').change(function() {
$('#myform').submit();
});
});
这会将表单发布到PromjenaTipa
操作,您可以在其中读取所选值:
[HttpPost]
public ActionResult PromjenaTipa(string tipTpa)
{
// tipTpa should contain the selected value
...
}
另一种可能性是在change事件中发送AJAX查询。在这种情况下,您不需要表单,因为您可以使用AJAX发送POST请求。