Pase una variable de JavaScript como parámetro a @ url.Action()
asp.net-mvc-4 (1)
¿es posible pasar una variable de javascript como parámetro a @ url.Action (), porque hasta donde yo sé puede haber un problema del lado del servidor y del cliente, mi requisito es que tenga que descargar el archivo de acuerdo con el filtro y llamar ajax no funciona con la descarga del archivo. así que he codificado el @ url.Action () que funciona pero no puedo implementar esto, ¿alguien puede sugerirme cómo pasar el parámetro a @ url.Action () o cualquier otro enfoque.
aqui esta mi codigo
<a href="@Url.Action("Export", new { SelectedAccountType="1", FromDate = "2014-02-02", ToDate = "2014-02-02", SelectedAccount = "", SelectedUser = "", SelectedTeam = "" })" class="btn-primary" id="exportbutton2"> Export as CSV</a>
y este es el parámetro que quiero asignar a @ Url.Action
<script type="text/javascript">
var accountType = $(''#SelectedAccountType'').val();
var fromDate = $(''#FromDate'').val();
var toDate = $(''#ToDate'').val();
var accountId = $(''#SelectedAccount'').val();
var userId = $(''#SelectedUser'').val();
var teamId = $(''#SelectedTeam'').val();
</script>
Necesita construir su url usando javascript / jquery. En la vista, cambie el enlace a
<a id="export" href=#">Export as CSV</a>
Luego en el guión
var baseurl = ''@Url.Action("Export")'';
$(''#export'').click(function() {
var url = baseurl + ''?SelectedAccountType='' + $(''#SelectedAccountType'').val() + ''&FromDate='' + $(''#FromDate'').val() + ''&ToDate='' + $(''#ToDate'').val() + ...etc
location.href=url;
});
Sin embargo, si su formulario está marcado con
FormMethod.Get
, puede usar un botón de envío normal y no se requiere jquery
@using (Html.BeginForm("Export", "yourControllerName", FormMethod.Get))
{
@Html.TextBoxForm(m => m.SelectedAccountType)
....
<input type="submit" value="Export" />
}