【问题标题】:Get Form data from the input fields Which names are generated by model dynamically into the controller从输入字段中获取表单数据模型动态生成哪些名称到控制器中
【发布时间】:2016-08-06 21:32:42
【问题描述】:

我有一个控制器,如下所示

[HttpPost]
    public ActionResult LoginResult()
    {
        //want get the data here
        return View();
    }

我有一个视图,我使用下面给出的模型来渲染视图

@model IEnumerable<My.Models.SurveyData>
@{
    ViewBag.Title = "Index";
}

<h2>Survey Form</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    @using (Html.BeginForm("LoginResult", "My"))
    {        
        foreach (var item in Model)
        {
            <tr>
                <h4> @Html.DisplayFor(modelItem => item.Question)</h4>
                <br />

            @if ((int)item.InputType == 1)
            {

                <input type="text" id="@item.Id" name="@item.Id" value="" />
            }
            else if ((int)item.InputType == 2)
            {
                <textarea rows="4" cols="50" id="@item.Id" name="@item.Id"></textarea>
            }
            else if (item.InputType.ToString().Trim().ToLower() == "checkbox")
            {
                for (int i = 0; i < @item.NumberOfChoice; i++)
                {
                    <input type=@item.InputType.ToString().Trim().ToLower() name="@item.AdminAnswers.ElementAt(i).Answer"></input>@item.AdminAnswers.ElementAt(i).Answer
                    <br />
                }
            }

        }
    <input type="submit" value="Login" />
}

现在我想将表单提交时的所有输入字段值获取到名为“My”的控制器中的 LoginResult 方法中,但所有输入字段名称都会动态出现。那么如何在方法中获取这些值。

【问题讨论】:

  • 请检查我的解决方案
  • @Dilip 你在说哪个解决方案?我不明白你的意思。请帮帮我

标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 c#-3.0


【解决方案1】:

改用列表并将foreach 循环替换为for 循环:

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

    @for (var i = 0; i < Model.Count; i++) 
    {
        <tr>
            <td>
                @Html.HiddenFor(x => x[i].IP)           
                @Html.CheckBoxFor(x => x[i].Checked)// input your model item
            </td>
            <td>
                @Html.DisplayFor(x => x[i].IP)
            </td>
        </tr>
    }
    <div>
        <input type="submit" value="Submit" />
    </div>
}

在您的控制器操作中

[HttpPost]

  public ActionResult LoginResult(IEnumerable<SurveyData> surveyData)
  {

  }

【讨论】:

  • 在我的控制器操作中为什么我应该通过这个调查数据集合?我没有得到你
  • 你应该传递它以便从视图中获取发布的数据到你的控制器
  • 我没有从视图中获取数据到控制器中。它显示我在surveyData中为空
  • 你有没有用forloop代替foreach作为metnioned
【解决方案2】:
You just have to put model in your Post method like this:

[HttpPost]
public ActionResult  LoginResult(IEnumerable<My.Models.SurveyData>   model)
{
    //Here you can access your model data

    //want get the data here
    return View();
}
Also do following change in your View :

 @using (Html.BeginForm("LoginResult", "My", FormMethod.Post))
{   
    // Your current code
}

【讨论】:

  • 但是在 LoginResult 方法中我如何访问输入字段值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-12
  • 2020-08-15
相关资源
最近更新 更多