起初 - 抱歉我的英语不好。可能是愚蠢的问题,但.... 所以,我有一个模型
public class AAAModel {
public int I1 {get; set}
public string S1 ...
public Guid G1 ...
}
我有一个控制器
public ActionResult Create(AAAModel WhatToCreate){
...
}
我有一个正确的视图来输入数据......一切都很好,但现在我必须重新组织视图以创建多个表单,并让用户能够动态创建新对象(模型)并将查询发送到服务器。我从服务器获得的数据来自Ajax查询并解析为表格...用户可以查看此数据,更正并可能将其发回。 因此,我从初始视图复制了几个表单,并更改控件的ID和名称 原来它就像
@Html.TextBoxFor(model => model.I1)
@Html.TextBoxFor(model => model.S1)
@Html.TextBoxFor(model => model.G1)
现在它像
一样<input id="I1_1" name="I1_1 ...>
<input id="S1_1" name="S1_1 ...>
<input id="G1_1" name="G1_1 ...>
表格1中的;
<input id="I1_2" name="I1_2 ...>
<input id="S1_2" name="S1_2 ...>
<input id="G1_2" name="G1_2 ...>
表格2,依此类推...... 愚蠢的问题,但我如何修改控制器或我必须做什么来获得这些值?
P.S。这些表单将通过ajax发送...并且主页不会重新加载。
答案 0 :(得分:0)
在这里查看:http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/和此处:http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx
<强>更新强>
您始终可以使用FormCollection来获取传递的模型值。
[HttpPost]
public ActionResult MyAction(FormCollection values)
{
string I1_2 = values["I1_2"];
//do something
}
如果需要,您可以使用指定@model dynamic
的动态对象,但不需要将视图的默认值从WebViewPage<dynamic>
派生。
如果您需要传递匿名对象,请查看此处 https://stackoverflow.com/a/5670899/1241400
答案 1 :(得分:0)
我不知道你的问题是否正确。确定你是否这样做并且它不起作用,但为什么不只是在页面上创建多个表单。因此,当用户提交某个表单时,它只会以该表单提交输入。
@using (Html.BeginForm("Method","Controller",FormMethod.Post,new {id="form1"}))
{
@Html.TextBoxFor(model => model.I1)
@Html.TextBoxFor(model => model.S1)
@Html.TextBoxFor(model => model.G1)
<input type="submit" name="submitButton" id=form1Submit />
}
@using (Html.BeginForm("Method","Controller",FormMethod.Post,new {id="form2"}))
{
@Html.TextBoxFor(model => model.I1)
@Html.TextBoxFor(model => model.S1)
@Html.TextBoxFor(model => model.G1)
<input type="submit" name="submitButton" id=form2Submit />
}
...
当然你要动态创建它。 如果我只是重复你的问题,我很抱歉
修改强>
如果您的问题是如何确定提交的数据集,我会在模型中添加一个id字段,并为您创建的每个新表单更改