Wie kann ich return List-oder Collection-Controller von der View im MVC-3?
Mir bitte jemand helfen wieder in dieser Liste richtig aus meiner Sicht. Ich sehe nicht ein, warum ich zurückkehren werde null für meine fieldModelList ich versuchen zu passieren, um den controller...
Hier ist meine Ansicht:
@model List<Regions.SOA.UI.CopyBookSchemaCreator.Models.FieldModel>
<script type="text/javascript" src="~/Scripts/jquery-ui-1.8.11.min.js"></script>
@using (Html.BeginForm("GetResponse", "TestMethods", FormMethod.Post))
{
<table id="tblMethods">
<tr>
<th>
Property Name
</th>
<th>
Request
</th>
</tr>
@foreach (FieldModel fieldModel in Model)
{
<tr>
<td>
@Html.DisplayFor(m => fieldModel.PropertyName)
</td>
<td>
@Html.TextBoxFor(m => fieldModel.PropertyValue)
</td>
</tr>
}
</table>
<div>
<input type="submit"/>
</div>
und hier ist mein controller:
[HttpPost]
public ActionResult GetResponse(List<FieldModel> fieldModelList)
{
return GetResponse(fieldModelList);
}
Ich bin schlagen die HttpPost-Methode, aber wenn ich einen Haltepunkt nur drin, bin ich wieder von null für den fieldModelList rechts von der Fledermaus, die ich hatte gehofft, wäre eine Liste der Werte, die ich eingetragen in die texboxes auf der Ansicht, dass ist von Modell FieldModel...
Ich denke, etwas ist falsch mit meiner Logik gegenüber meiner syntax, oder wie vielleicht sowie meine syntax, aber im Grunde, was ich tun möchte, ist zurück eine Liste des Typs FieldModel mit jeweils PropertyName und PropertyValue an den controller. Ich bemerkte, dass ich mich nicht übergeben, Art der id-parameter in meinem BeginForm-Anweisung in der Ansicht. Benötige ich hier?
Nur für den Fall, hier ist meine model-Klasse für FieldModel:
namespace Regions.SOA.UI.CopyBookSchemaCreator.Models
{
public class FieldModel
{
[Display(Name = "Property")]
public string PropertyName { get; set; }
[Display(Name = "Value")]
public string PropertyValue { get; set; }
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Phil Haack schrieb einen Artikel vor einiger Zeit erklärt, wie zum binden von Sammlungen (
ICollection
) das anzeigen von Modellen. Es geht in weitere Details über die Erstellung einer editor-Vorlage, die Sie natürlich nicht so gut.Grundsätzlich müssen Sie das Präfix der HTML-Elemente' name-Attribute mit einem index.
Dann der controller binden konnte die Sammlung von
FieldModel
Bin ich mir nicht 100% sicher, dass die folgenden Namen der Attribute korrekt (ich würde empfehlen mit der editor-template) aber Sie könnte leicht verwenden Sie die
htmlAttributes
argument und geben Sie einen Namen mithilfe der index.Editor-Template
Wenn Sie wollten, so weit zu gehen wie das hinzufügen einer template-editor, fügen Sie eine teilweise Ansicht mit dem Namen
FieldModel.ascx
zu/Views/Shared
dass ist stark typisiert zu einemFieldModel
Und dann der Teil der view verantwortlich für die Erbringung der Kollektion Aussehen würde:
@foreach (FieldModel fieldModel in Model) { <tr> <td> @Html.DisplayFor(m => fieldModel.PropertyName) </td> <td> @Html.TextBoxFor(m => fieldModel.PropertyValue) </td> </tr> }
<br/> Wie mache ich das dynamisch? Ich denke, ich könnte ein i=0-Zähler in meiner for-Schleife anstatt einer Schleife durch die fieldModels? Wahrscheinlich offensichtlich, aber ich bin nicht zu sehen, wie Sie tun im moment...