shanker702
asked on
Return Value From DropDownList in MVC using VB
My partner on a project set up a drop down list that pulls our data from the SQL database to display the content of the drop down. Now the issue is using that data. I have no idea where the data is being returned or posted, tried a million things, just need some help.
Here is the code in the controller for the drop down list
Here is the function in the same controller for the charting function that will pass the correct data to the view for the chart.
Here is the implementation of the drop down lists in our view
Here is the code in the controller for the drop down list
Function Index() As ActionResult
Dim List As New List(Of SelectListItem)
List.Add(New SelectListItem With {.Text = "Select a Year", .Value = 0}) ' Adds first value as "Select a Year"
Dim valQ = From y In db.gasrevperyears _
Select y.year, y.ID _
Order By year
For Each k In valQ
List.Add(New SelectListItem With {.Text = k.year, .Value = k.ID})
Next
ViewData("startDD") = List
ViewData("endDD") = List
Return View()
End Function
Here is the function in the same controller for the charting function that will pass the correct data to the view for the chart.
<AcceptVerbs(HttpVerbs.Post)>
Function Chart() As ActionResult
'This is where the code to build the chart should be
Dim startDD As String
Dim endDD As String
Dim List As New List(Of CChartData)
Dim valQ = From y In db.gasrevperyears
Where y.year >= startDD AndAlso endDD <= 2010
Select y.year, y.amount
Order By year
For Each k In valQ
List.Add(New CChartData With {.Year = k.year, .ValueS1 = k.amount})
Next
Return View(List)
End Function
Here is the implementation of the drop down lists in our view
@ModelType gasrevperyear
@Code
ViewData("Title") = "Gasoline Revenue Per Year"
End Code
<div class="row-fluid">
<div class="span12">
<h2>Gasoline Revenue Per Year</h2>
</div>
@Using Html.BeginForm("Chart", "usergasrevperyear", method:= FormMethod.Post)
@Html.ValidationSummary(True)
@<fieldset>
<legend>Please Select Graph Parameters</legend>
<div class="row-fluid">
<div class="span6">
</div>
</div>
<div class="row-fluid">
<div class="span6">
<p>From Year</p>
<div class="span6">
@Html.DropDownListFor(Function(model) model.year, ViewData("startDD"))
</div>
</div>
</div>
<div class="row-fluid">
<div class="span6">
<p>To Year</p>
<div class="span6">
@Html.DropDownListFor(Function(model) model.year, ViewData("endDD"))
</div>
</div>
</div>
<div class="span2 offset3">
<button id="submit" name="submit" class="btn-btn-primary">Submit</button>
</div>
</fieldset>
End Using
</div>
ASKER
so would I just add the 2 parameters to the function? How do I use those 2 values in the function?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
So would I try using the FormCollection parameter? and that will allow me to take what i need from the form once its submitted?
ASKER
Ok, so I created a class for the data, and now my chart function looks like:
So how do i render the drop downs in my form so that their values bind to the properties of the new object being created as a parameter
Function Chart(chartData As DropDownData) As ActionResult
'This is where the code to build the chart should be
Dim startDD As Integer
Dim endDD As Integer
startDD = chartData.startDD
endDD = chartData.endDD
Dim List As New List(Of CChartData)
Dim valQ = From y In db.gasrevperyears
Where y.year >= startDD AndAlso endDD <= 2010
Select y.year, y.amount
Order By year
For Each k In valQ
List.Add(New CChartData With {.Year = k.year, .ValueS1 = k.amount})
Next
Return View(List)
End Function
So how do i render the drop downs in my form so that their values bind to the properties of the new object being created as a parameter
If you are talking about this drop down:
@Html.DropDownListFor(Func tion(model ) model.year, ViewData("endDD"))
then, the argument should be the same type as the model. Then, it will assign the values from the post-back to that argument.
You don't have to do anything else.
@Html.DropDownListFor(Func
then, the argument should be the same type as the model. Then, it will assign the values from the post-back to that argument.
You don't have to do anything else.
ASKER
So I changed it to this
But it still isn't getting anything from the post data from the drop down you referenced, and that's the same model type now.
<AcceptVerbs(HttpVerbs.Post)>
Function Chart(startDD As gasrevperyear, endDD As gasrevperyear) As ActionResult
'This is where the code to build the chart should be
Dim startDD1 As String
Dim endDD1 As String
startDD1 = startDD.year
endDD1 = endDD.year
But it still isn't getting anything from the post data from the drop down you referenced, and that's the same model type now.
ASKER
I finally figured it out thanks to you. Thanks a ton for pointing me in the right direction, I was looking at it all wrong
ASKER
I finally figured it out thanks to you. Thanks a ton for pointing me in the right direction, I was looking at it all wrong
Open in new window
You would need a parameter for the Chart method to accept a value from the submit and post-back.