Multiple partial views on a single page in ASP.Net MVC
===

I'm using a modified version of this [sample][1] to get multiple editors on the same page. It's a Poll with multiple Questions, so i want to be able to add/remove questions without leaving the page, or having to add questions one by one in a different page.

  [1]: http://iridescence.no/post/Partial-Rendering-with-ASPNET-MVC-and-jQuery.aspx

The difference from the sample is that the partial view being loaded is editable, not static.

This is the code adding a new question on the main form:

	function newQuestionClick() {
		$.ajax(
		{
			type: "POST",
			url: "../Poll/NewQuestion",
			dataType: "html",
			success: function (result) {
				$(result).appendTo($("#questions")).slideDown();
			}
		});
	}

Controller:

	Function NewQuestion() As ActionResult
		Return View("Question", New Question)
	End Function

To avoid id conflicts, i generate a random number that is appended to every id. The property `name` of the html inputs are the same, this is passed back to the controller as an array.

Question.ascx view:

    <%@ Control Language="vb" 
        Inherits="System.Web.Mvc.ViewUserControl(Of myproject.Question)" 
        AutoEventWireup="false" %>

    <%
    Dim Id As Integer = (New Random).Next(1, 100000000) + Question.Number
    %>

    <div><label>Question</label>
    <%=Html.TextBox("Description", Model.Description, 
                    New With {.id = "Descr" & Id})%></div>

    <div><label>Type</label>
    <%=Html.TextBox("Type", Model.Type, New With {.id = "Type" & Id})%></div>
    
When the main form is submitted i save the questions using this code on the controller:

    <AcceptVerbs(HttpVerbs.Post)> _
    Function NewPoll(P As Poll, Description As Array, Type As Array) As ActionResult
        Dim Error As String = ""
        ... Validate P ...
        If Description.Length = 0 Then Error += "Please add at least one question."
        For I As Integer = 0 To Description.Length - 1
            Dim Q As New Question
            Q.Description = Description(I)
            Q.Type = Type(I)
            If Description(I) = "" Then Error += "Invalid description."
            If Type(I) = "" Then Error += "Invalid type."
            P.Questions.Add(Q)
        Next
        If Error <> "" Then
            ModelState.AddModelError("_FORM", Error)
            Return View(P)
        Else
            Data.AddPoll(P)
            Return RedirectToAction("Index")
        End If
    End Function

This all works very well, but if a validation error occur, I have to re-display the questions using the following code on the main form:

    <div id="questions">
        <% For Each Q In Model.Questions
            Html.RenderPartial("~/Views/Poll/Question.ascx", Q)
        Next %>
    </div>

This also works, but when the form is displayed, all questions have the same content. Stepping through the debug i see that when the question is about to be displayed, the variable have the correct value (Breakpoint on `Html.TextBox("Description", ...`). But when i get the final form the value is replaced.

What is happening?

Ps: I have tried removing the `Inherits="System.Web.Mvc.ViewUserControl(Of myproject.Question)"` but problem persits

(I also accept alternate ways of doing this whole scenario)