Para todo aquel que llegue aquí en busca de información, les dejo la solución que implementé (que la verdad no creo que sea la mejor, pues tengo mis dudas con el performance de la aplicación):
Código en la vista:
Código:
<select id="cboEjemplo" name="cboEjemplo">
<%= ViewData("cboEjemplo") %>
</select>
Lo que hago aquí es crear un combo HTML con el id y name cboEjemplo (Es necesario poner los dos ya que MVC cacha el valor de los NAME en el submit, y el id lo utilizo para mi código de JQUERY.
Posteriormente en el Modelo tengo la siguiente función:
Código:
Public Function LlenarCombo(sp as string) As String
Try
Dim tblDatos as DataTable = EjecutarSp(sp)
Dim combo as string = ""
For each ren as DataRow in tblDatos.Rows
combo &= "<option value='" & ren.item(0) & "'>" & ren.item(1) & "</option>"
Next
return combo
Catch ex as Exception
Throw ex
End Try
End Function
Ésto lo hago práctimente sabiendo que TODOS los sp que haga para llenar combos traeran el ValueMember como primer campo y el DisplayMember como segundo. De tal modo que la función SIEMPRE regresará los elementos del combo.
Y en el controlador tengo lo siguiente:
Código:
Function Productos() As ActionResult
Try
ViewData("cboEjemplo") = LlenarCombo("spLlenarComboEjemplo")
return View
Catch ex as Exception
ViewData("Error") = ex.Message
End Try
End Function
De éste modo todo lo que reciba de la función LlenarCombo se escribirá en dónde esté el ViewData("cboEjemplo").
Si alguien tiene una respuesta mejor favor de hacernosla saber!
Saludos!