2011-02-25 40 views
1

嘿.. 如何在更改事件的[HttpPost]方法中接收選定的下拉列表值?我總是通過[HttpGet]方法接收它。MVC-在更改事件[HttpPost]方法中接收選定的下拉列表值

<%: Html.DropDownListFor(model => model.TipTpa, ViewData[ArtikliKonstante.vdListaTipovaTPa] as IEnumerable<SelectListItem>, 
       new { onchange = "location.href='/Artikli/PromjenaTipa? p='+this.value"})%>  

如果我將我的方法聲明爲[HttpPost],我得到錯誤,那個操作不存在。任何想法? Thx

回答

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 
    ... 
} 

另一種可能性是在更改事件中發送AJAX查詢。在這種情況下,您不需要表單,因爲您可以使用AJAX發送POST請求。

相關問題