Asp.net mvc 用于更新子表的ASP.NET模型绑定问题
我正在ASP.NETMVC应用程序中使用LINQtoSQL。该模型由一个决策表和一个选项表(一个决策,多个选项)的外键链接组成。因此,该模型允许我通过Decision.Options属性访问选项集合。我希望允许我的用户在更新其他决策属性的不同视图中更新决策的选项集合。为了更新决策对象,将选项集合传递回控制器的最佳方式是什么?代码如下: 控制器向选项视图发送决策模型:Asp.net mvc 用于更新子表的ASP.NET模型绑定问题,asp.net-mvc,linq-to-sql,updatemodel,Asp.net Mvc,Linq To Sql,Updatemodel,我正在ASP.NETMVC应用程序中使用LINQtoSQL。该模型由一个决策表和一个选项表(一个决策,多个选项)的外键链接组成。因此,该模型允许我通过Decision.Options属性访问选项集合。我希望允许我的用户在更新其他决策属性的不同视图中更新决策的选项集合。为了更新决策对象,将选项集合传递回控制器的最佳方式是什么?代码如下: 控制器向选项视图发送决策模型: // // GET /Decisions/Options/5 [Authorize] publi
//
// GET /Decisions/Options/5
[Authorize]
public ActionResult Options(int id)
{
Decision decision = decisionRepository.GetDecision(id);
return View(decision);
}
“我的视图”页面仅列出供用户修改和提交的选项名称字段:
<% using (Html.BeginForm())
{%>
<div id="answers">
<table>
<% int i = 0; %>
<% foreach (var item in Model.Options)
{ i += 1;
%>
<tr>
<td>
<label>Option #<%= i%>: </label>
<%= Html.TextBox("Option.Name", item.Name)%>
</td>
</tr>
<% } %>
</table>
<input type="submit" name="button" value="Back" />
<input type="submit" name="button" value="Next" />
</div>
<% } %>
在选项的后期操作中,传回选项项集合的最佳方式是什么
在调用Save方法之前,我已尝试直接使用FormCollection将其转换为EntitySet以分配给Decision.Options。上面的代码传递了决策对象,但Options集合始终为null,因此我的注释TODO
我已经将其用于直接编辑决策对象,但在使用模型绑定器或FormCollection更新模型中的子表时遇到问题。非常感谢您的帮助 由于您有许多潜在的选项,因此需要将每个输入与其他输入区分开来。你不能给他们取相同的名字 而不是:
<%= Html.TextBox("Option.Name", item.Name)%>
尝试使用:
<%= Html.TextBox("Option[" + i + "].Name", item.Name)%>
然后在您的操作中使用一个选项数组作为参数之一
公共操作结果选项(int-id、字符串按钮、决策d、选项[]选项)
{
...
}
然后,您可以根据需要将提供的选项连接到决策
请参阅Hanselman关于该主题的文章。谢谢!我终于能够在Action方法中获得选项数组,因为我记得数组必须基于0!我一点就开始做了。再次感谢!
<%= Html.TextBox("Option[" + i + "].Name", item.Name)%>