Вам нужно 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 в событии изменения. В этом случае вам не нужна форма, так как вы можете отправить запрос POST с помощью AJAX.