C# ASP.NET MVC生成发布表单

C# ASP.NET MVC生成发布表单,c#,jquery,asp.net,asp.net-mvc,C#,Jquery,Asp.net,Asp.net Mvc,我只是在寻找MVC中的一个问题,即,我需要两个输入文本框,用户将在其中输入行数和列数。输入后,用户将按下生成按钮,并在下一个操作方法上生成所需数量的文本框。例如,如果用户输入2行3列,则在提交后,第二个表单将包含6个表格形式的文本框,最重要的是,应该有一个提交按钮,通过该按钮,我可以从POST操作中的所有6个文本框中获取值 这是我的密码 型号: [Required] [Display(Name = "Rows")] [Range(1, 10, ErrorMessage =

我只是在寻找MVC中的一个问题,即,我需要两个输入文本框,用户将在其中输入行数和列数。输入后,用户将按下生成按钮,并在下一个操作方法上生成所需数量的文本框。例如,如果用户输入2行3列,则在提交后,第二个表单将包含6个表格形式的文本框,最重要的是,应该有一个提交按钮,通过该按钮,我可以从POST操作中的所有6个文本框中获取值

这是我的密码

型号:

    [Required]
    [Display(Name = "Rows")]
    [Range(1, 10, ErrorMessage = "Number of Rows must be between 1 to 10")]
    public int NumberofRows { get; set; }

    [Required]
    [Display(Name = "Columns")]
    [Range(1, 4, ErrorMessage = "Number of Columns must be between 1 to 4")]
    public int NumberofColumns { get; set; }

    public List<int> EnteredNumberRows { get; set; }
    public List<int> EnteredNumberColumns { get; set; }
[必需]
[显示(Name=“行”)]
[范围(1,10,ErrorMessage=“行数必须介于1到10之间”)]
public int NumberofRows{get;set;}
[必需]
[显示(Name=“Columns”)]
[范围(1,4,ErrorMessage=“列数必须介于1到4之间”)]
公共int NumberofColumns{get;set;}
公共列表EnteredNumberRows{get;set;}
公共列表EnteredNumberColumns{get;set;}
控制器:

/*Index action is one, in which the number of rows and columns are displayed. After entering number of rows and columns it redirects it to the Enter action containing required number of rows and columns*/
public class HomeController : Controller
{
    DataMineModel homeDataMineModel = new DataMineModel();
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Index(DataMineModel model)
    {
        TempData["NumofRows"] = model.NumberofRows;
        TempData["NumofColumns"] = model.NumberofColumns;

        return RedirectToAction("Enter");
    }

    public ActionResult Enter()
    {
        homeDataMineModel.EnteredNumberRows = new List<int>((int)TempData["NumofRows"]);
        homeDataMineModel.EnteredNumberColumns = new List<int>((int)TempData["NumofColumns"]);

        return View(homeDataMineModel);
    }

    [HttpPost]
    public ActionResult Enter(DataMineModel viewModel)
    {

        return View();
    }
}
/*索引操作是一种显示行数和列数的操作。输入行数和列数后,它会将其重定向到包含所需行数和列数的Enter操作*/
公共类HomeController:控制器
{
DataMineModel homeDataMineModel=新DataMineModel();
公共行动结果索引()
{
返回视图();
}
[HttpPost]
公共行动结果索引(DataMineModel)
{
TempData[“numorrows”]=model.NumberofRows;
TempData[“NumofColumns”]=model.NumberofColumns;
返回重定向到操作(“输入”);
}
公共操作结果输入()
{
homeDataMineModel.EnteredNumberRows=新列表((int)TempData[“numorrows]”);
homeDataMineModel.EnteredNumberColumns=新列表((int)TempData[“NumofColumns]”);
返回视图(homeDataMineModel);
}
[HttpPost]
公共操作结果输入(DataMineModel viewModel)
{
返回视图();
}
}
视图:

索引:

@using (Html.BeginForm()) 
{
@Html.AntiForgeryToken()

<div class="form-horizontal">
    <br />
    <h4>Please enter the number of Rows and Columns.</h4>
    <hr />
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    <div class="form-group">
        @Html.LabelFor(model => model.NumberofRows, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.NumberofRows, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.NumberofRows, "", new { @class = "text-danger" })
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.NumberofColumns, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.NumberofColumns, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.NumberofColumns, "", new { @class = "text-danger" })
        </div>
    </div>

    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Enter" class="btn btn-success" />
        </div>
    </div>
</div>
  }
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()

请输入行数和列数。
@Html.ValidationSummary(true,“,new{@class=“text danger”}) @LabelFor(model=>model.NumberofRows,htmlAttributes:new{@class=“controllabel col-md-2”}) @EditorFor(model=>model.NumberofRows,new{htmlAttributes=new{@class=“form control”}}) @Html.ValidationMessageFor(model=>model.NumberofRows,“,new{@class=“text danger”}) @LabelFor(model=>model.NumberofColumns,htmlAttributes:new{@class=“controllabel col-md-2”}) @EditorFor(model=>model.NumberofColumns,new{htmlAttributes=new{@class=“form control”}) @Html.ValidationMessageFor(model=>model.NumberofColumns,“,new{@class=“text danger”}) }
输入:

@using (Html.BeginForm("Enter", "Home", FormMethod.Post))
{
<div class="row">
    @for (int i = 0; i < Model.EnteredNumberColumns.Capacity; i++)
    {
        <div class="col-md-3">
            <div class="row">
                @for (int k = 0; k < Model.EnteredNumberRows.Capacity; k++)
                {
                    <br />
                        <input type="text" class="form-control" name="name" value="" />
                    <br />
                }
            </div>
        </div>
    }
</div>

     <input type="submit" class="btn btn-success" value="Classify the data"    />
   }
@使用(Html.BeginForm(“Enter”、“Home”、FormMethod.Post))
{
@对于(int i=0;i

} } }


谢谢。

正如罗伯特所建议的,这对MVC来说不是问题。您可以编写一些JS来获取用户输入,并根据输入生成HTML表。您的JS应该是:

$("body").on("change", "#coaLevelInput", function () {

        var l = $(this).val();
        var ht= "";
        for (var i = 1; i <= l ; i++)
        {
            ht= ht + "<div .... here you should set your CSS classes'>Code Lenght at Level" + i + "</label><span class=''><input class=''></span></div></div>";

        }
        $("#coaInputs").html(ht);

    });
$(“body”)。关于(“更改”,“coaLevelInput”,函数(){
var l=$(this.val();
var ht=“”;

对于(var i=1;我试过在HTML中添加一个表单标记,然后循环所需的行数和列数以动态添加输入元素?顺便说一句:这在MVC中不是问题,但在Javascript中是问题。Karl为您指出了正确的方向。您只需确保您的控制器以正确的形式接受数据。您很可能希望t以数组的形式发送数据。我已经更新了帖子。你可以看到问题是我没有在帖子操作中输入值。请告诉我要用哪个Razor输入控件来代替元素。有人有什么解决方案吗?