使用Asp.net MVC,我有一个强烈绑定到“List”的视图,并循环部分渲染部分视图,如下所示
<%
foreach (var q in Model)
{
Html.RenderPartial("Question", q);
}
%>
并且此部分视图强烈绑定到“问题”
<%
foreach (var option in Model.Options)
{
%>
<p/>
<%=Html.RadioButton(option.QuestionId.ToString(), (option.IsSelected) )%> <%= option.OptionBody%>
<%
}
}
%>
在主视图中回复帖子,如下所示
<% Html.BeginForm("Submit", "Questionnaire", FormMethod.Post); %>
<input type="submit" name="submit" value="submit" />
<% Html.EndForm(); %>
最后在我的控制器
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Submit(List<Question> test)
{
var x = test;
return View("Submit");
}
我的表格是
<% Html.BeginForm(); %>
<%:"UserName : "%>
<%=ViewData["UserName"]%>
<%=Html.TextBox("test",ViewData["tt"])%>
<p />
<%:"Phone Number :"%>
<%=ViewData["PhoneNumber"]%>
<p />
<%
foreach (var q in Model)
{
Html.RenderPartial("Question", q);
}
%>
<% Html.EndForm(); %>
<% Html.BeginForm("Submit", "Questionnaire", FormMethod.Post); %>
<% TempData["form"] = ViewData;%>
<input type="submit" name="submit" value="submit" />
<% Html.EndForm(); %>
当我将所有内容都包含在一个开始表单中时,回发dos not fire“
我的问题是 为什么x总是为空? 以及如何获取更新的模型(将用户选择到部分视图中呈现的单选按钮) 我应该使用TempData存储我的价值吗?怎么样?
收到正确的更新型号后,我会将其保存到DB。 谢谢!
答案 0 :(得分:3)
<% Html.BeginForm("Submit", "Questionnaire", FormMethod.Post); %>
<input type="submit" name="submit" value="submit" />
<% Html.EndForm(); %>
在我看来,您的表单内部只有一个input
。您需要在表单中呈现您的编辑器,否则它们将不会作为POST的一部分包含在内。
所以现在你有两个表单:一个有你想要提交的输入,另一个有实际的按钮。问题是,单击第二个上的提交按钮将只提交第二个(几乎为空)表单。为什么不组合你的表格?
<% Html.BeginForm("Submit", "Questionnaire", FormMethod.Post); %>
<%=ViewData["UserName"]%>
<%=Html.TextBox("test",ViewData["tt"])%>
<p />
<%:"Phone Number :"%>
<%=ViewData["PhoneNumber"]%>
<p />
<%
foreach (var q in Model)
{
Html.RenderPartial("Question", q);
}
%>
<input type="submit" name="submit" value="submit" />
<% Html.EndForm(); %>