2016-06-16 11 views
-1

Ich habe ein Formular für einen Kommentar erstellt. Ich habe es in der Hauptansicht namens Index im Home-Controller erstellt. unten ist ÜbersichtFormular einreichen mit partail Fehler anzeigen

private projectDBEntities db = new projectDBEntities(); 
    public ActionResult Index() 
    { 
     ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application."; 

     return View(); 
    } 

    public ActionResult AddComment() 
    { 
     return PartialView("_Comment"); 
    } 


    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult AddComment(comment cmt) 
    { 
     if (ModelState.IsValid) 
     { 
      db.comments.Add(cmt); 
      db.SaveChanges(); 
      return RedirectToAction("Index", "Home"); 
     } 
     return PartialView("_Comment", cmt); 
    } 

unten _Comment Teilansicht

@using (Html.BeginForm()) {@Html.AntiForgeryToken()@Html.ValidationSummary(true) 
<fieldset> 
    <legend>comment</legend> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.cmd_content) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.cmd_content) 
     @Html.ValidationMessageFor(model => model.cmd_content) 
    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.t_email) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.t_email) 
     @Html.ValidationMessageFor(model => model.t_email) 
    </div> 
    <p> 
     <input type="submit" value="Comment" /> 
    </p> 
</fieldset>} 

System.Web.HttpException occuerd war ist. Ich möchte wissen Was ist der Grund für diesen Fehler und was ist die beste Methode zum Senden mit Parail View.

+1

beschreiben Sie Ihre Ausnahme – Rica

+0

Sie können ein Formular wie dieses nicht verwenden, Sie werden doppelte Felder haben, wenn Sie es mehr als einmal hinzufügen. Außerdem wird alles auf die gleichen Felder im Modell abgebildet. Verwenden Sie für jede erstellte Teilansicht ein eindeutiges Modell? Sie müssen alle Feld IDs eindeutig machen und Model Mappings –

Antwort

0

Id haben mit Sandip Antwort zustimmen hier, aber zu erarbeiten ..

@using (Html.BeginForm("AddComment", "Home")) 
{ 
     //Content to send to the server-side 
} 

Solange Ihr Modell in Ihrer Teilansicht auf Ihr Objekt 'Kommentar' zeigt, sollte dies bei Verwendung von @Html.EditorFor() funktionieren. In Ihrem Controller warten Sie bereits darauf, dass Ihr "Kommentar" -Objekt ausgefüllt wird. Wenn also beim Senden auf "Senden" geklickt wird, wird das Objekt ausgefüllt.

Hoffe, das hilft.

0

@using (Html.BeginForm ("AddComment", "Home")) {

}

+0

diese Antwort auch richtig – OK91

+0

Versuchen Sie, Ajax.BeginForm() zu verwenden. Es wird Leistung auf Ihrer Website geben. –