ICollection<String>
이 내보기로 전달되고 foreach를 사용하여 부분 뷰를로드합니다. 그것은 정확한 횟수만큼 순환하지만, 통과하는 값은 동일하고, 모델에서 이것이 사실이 아니라는 것을 알고 있습니다.첫 번째 값 이후 뷰 루프 값이 변경되지 않습니다.
컨트롤러 :
public class HomeController : Controller
{
public ActionResult Index()
{
return View("Index", new List<String>());
}
[HttpPost]
public ActionResult Index(List<String> txtValue)
{
return View("Index", txtValue);
}
}
보기 :의
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<List<String>>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Home
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script type="text/javascript">
//Deletes the div the Control is in.
$(".delete").live("click", function() {
$(this).parent().remove();
});
//Adds the TextBoxes to divControls
function AddTextBox(Value) {
var elements = "<div><input name=\"txtValue\" type=\"text\" /><input type=\"button\" class=\"delete\" value=\"-\" /><br/></div>";
$("#divControls").append(elements);
}
</script>
<h2>Controls!!!</h2>
<input id="btnAdd" type="button" name="Refresh" value="+" onclick="AddTextBox()" />
<% using (Html.BeginForm())
{ %>
<input id="btnsubmit" type="submit" name="Submit" onclick="Submit" />
<div id="divControls">
<%
foreach (var text in this.Model)
{ %>
<%=Html.TextBox("txtValue", text, new { id = "Value", name = "txtValue" })%>
<% Html.RenderPartial("TextControl", text);
}
%>
</div>
<%
}
%>
</asp:Content>
TextControl.ascx
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<String>" %>
<div>
<%=Html.TextBox("txtValue", this.Model, new { id = "Value", name = "txtValue" }) %>
<input id="btn" type="button" class="delete" value="-" /><br/>
</div>
값 컨트롤러에서보기로 전달 된 모델은 올바른지, 사용자 컨트롤 "TextControl"에 전달 된 경우에도 값은 정확하지만 텍스트 상자가 표시되면 원래 모델의 처음 값으로 전달됩니다.
Ex .
Model as List<String> { "1", "2", "3", "4" }
뷰에 전달, "TextControl"는
Html.TextBox("name", this.Model)
을 만들 수있는 올바른 문자열을 전달, 제대로 하나 하나를 반복합니다. 그러나 모든 디버깅 측면에서 올바른 것처럼 보이지만 모든 텍스트 상자가 완료되면 "1"(또는 목록의 첫 번째 값)이됩니다.
http://www.sendspace.com/file/sypl1u
참고 : 난 그냥 <input type="text" name="txtValue" value="<%= this.Model %>" />
을 대신 사용하는 솔루션을 함께했다
여기 내 정확한 코드에 대한 링크입니다.
나는 당신의 제목을 편집했습니다. "[제목에"태그 "가 포함되어 있어야합니까?] (http://meta.stackexchange.com/questions/19190/)"합의가 "아니오, 그렇지 않아야합니다"로 표시되어야합니다. –
내가 증가하지 않는다고 말하는거야? – Jan
'i'는 분명히 증가합니다. 문제는 코드의 다른 부분에 있어야합니다. – climbage