2016-07-28 7 views
0

Um das Problem zu erstellen Ich habe ich zwei Aktionen einfache Steuerung eingerichtet habe, zwei Ansichten und eine Ansicht Modell:ASPNET MVC 5 HTML-Helfer Aktionsmethode Ergebnisse anzeigen Eingabe-ID fehlt (manchmal ..) Möglicher Fehler?

Multiformen Aktion (in Form Controller-Klasse)

public class FormController : Controller 
{ 
    [HttpGet] 
    public ActionResult MultiForms() 
    { 
     return View("MultiForms"); 
    } 

    // ... 

MultiForms.cshtml - Razor Ansicht

@Html.Action("MyFormGet", "Form") 

Beachten Sie in der Aktionsmethode ich die Controller-Methode aufrufen, die die Form teilweise vie zurück w.

MyFormGet Aktion

[HttpGet] 
public PartialViewResult MyFormGet() 
{ 
    var viewModel = new MyFormViewModel(); 
    ViewData.TemplateInfo.HtmlFieldPrefix = Guid.NewGuid().ToString().Replace("-", "_"); 
    return PartialView("MyForm", viewModel); 
} 

Ansicht Modell

public class MyFormViewModel 
{ 
    public string TextInput1 { get; set; } 
} 

MyForm.cshtml - Razor Ansicht

@model Mvc5App.Controllers.MyFormViewModel 

@using (Html.BeginForm("MyFormPost", "Form", FormMethod.Post)) 
{ 
    <br /> 
    @Html.TextBoxFor(m => m.TextInput1) 
} 

Wenn ich meinen Browser auf /Form/MultiForms Punkt bekomme ich die Ausgabe erwarte ich:

<input type="text" value="" name="e166fa0d_46fe_40d4_a970_73c52a35f224.TextInput1" id="e166fa0d_46fe_40d4_a970_73c52a35f224_TextInput1"> 

Dann aktualisieren ich die Seite und die Ausgabe wird dies:

<input type="text" value="" name="48edc339_69ad_4b9b_9583_198038beab45.TextInput1"> 

Wo hat das Attribut id gehen? Ist das ein Fehler in ASPNET MVC5 oder habe ich etwas falsch mit diesem Setup gemacht?

+2

Was meinst du mit "Main Controller Razor View"? Auf welche Aktionsmethode zeigt '/ Form/MultiForms', da es keinen' FormController' gibt? Warum erstellen Sie eine Ansichtsmodellinstanz in Ihrer 'MyFormGet()' Methode, verwenden diese Instanz jedoch nirgendwo? –

+0

Der MultiForms-Controller gibt MultiForms.cshtml zurück. Die einzige Zeile in dieser Ansicht ist eine Action-Hilfsmethode, die den MyFormGet-Controller aufruft und die MyForm.cshtml-Ansicht zurückgibt. Der MyFormGet-Controller gibt eine Instanz von MyFormViewModel mit einer Eigenschaft zurück, die das Formular mit einer einzelnen Eingabe rendert.Ich denke, du verpasst das Hauptproblem: ** Das Feld sollte mit einem ID-Attribut rendern und nicht (manchmal) ** – ooXei1sh

+1

Wenn dein Controller den Namen 'MultiForms' hat, ist der Endpunkt'/Form/MultiForms' ungültig. .. – demo

Antwort

1

Dank @demo Ich glaube, ich herausgefunden, wenn die ID nicht angezeigt ...

Wenn die ID mit einer Ziffer (oder Unterstrich) beginnt es nicht machen wird. So wird diese GUID machen:

f3b1a447_3786_4472_9dfe_14c3ae8aae24

Aber diese werden nicht:

1c26ce3d_5c71_408a_aae2_7be414f1d383

Die Lösung für die oben scheint mit so etwas zu werden prefixing:

FOO_1c26ce3d_5c71_408a_aae2_7be414f1d383

Und die Probleme verschwinden.

+2

Für ein bisschen mehr Details, warum dies das Standardverhalten ist, beziehen Sie sich auf [diese Antwort] (http://stackoverflow.com/questions/36552762/razor-if-model-is-list-then-html-labelfor-creates) -emtpy-für-feld/36560528 # 36560528) –

Verwandte Themen