2016-04-15 7 views
-1

ich einen Controller haben wie unten angegebenErhalten Sie Formulardaten aus den Eingabefeldern, die Namen von Modell in die Steuerung dynamisch generiert werden

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

und ich habe eine Ansicht, in der ich von einem Modell eine Ansicht bin Rendering wie unten angegeben

@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 [email protected]().Trim().ToLower() name="@item.AdminAnswers.ElementAt(i).Answer"></input>@item.AdminAnswers.ElementAt(i).Answer 
        <br /> 
       } 
      } 

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

Jetzt möchte ich Felder Wert Vorlage auf Form in die LoginResult Methode, um alle Eingabe erhalten, die Namen in Controller ist „My“, aber alle i Der Name der Eingabe-Felder wird dynamisch kommen. Wie kann ich diese Werte in der Methode bekommen?

+0

PLease meine Lösung – Dilip

+0

@Dilip überprüfen, welche Lösung Sie sprechen Über? Ich habe dich nicht verstanden. Bitte helfen Sie mir – user3235118

Antwort

0

eine Liste Verwenden Sie stattdessen und ersetzen Sie Ihre foreach Schleife mit einer for Schleife:

@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> 
} 

In Ihrem Contoller Aktion

[HttpPost] 

    public ActionResult LoginResult(IEnumerable<SurveyData> surveyData) 
    { 

    } 
+0

in meiner Controller-Aktion Warum sollte ich diese UmfrageData-Sammlung übergeben? Ich habe Sie nicht bekommen – user3235118

+0

Sie sollten es übergeben, um die gebuchten Daten aus der Sicht auf Ihre Contorller –

+0

Ich bekomme keine Daten aus Sicht in Controller. Es zeigt mir Null in die UmfrageData – user3235118

0
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 
} 
+0

aber innerhalb der LoginResult-Methode wie kann ich auf die Eingabefeld Werte – user3235118

+0

zugreifen model.id – Dilip