MVC3:如何将具有不同ID的视图表单HTML UI链接到一个控制器/模型

时间:2012-10-15 20:09:23

标签: ajax asp.net-mvc-3 razor submit

起初 - 抱歉我的英语不好。可能是愚蠢的问题,但.... 所以,我有一个模型

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发送...并且主页不会重新加载。

2 个答案:

答案 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字段,并为您创建的每个新表单更改