2012-08-03 6 views
0

Я работаю над веб-приложением mvc .net. У меня есть база данных, в которой есть трудности (таблица называется трудной), и у каждой сложности есть комментарии. На мой взгляд, я хочу показать все трудности с соответствующими комментариями и текстовой областью для нового комментария и кнопкой для ее отправки. Я создал класс модели, содержащий трудности и комментарии, строку var для содержимого нового комментария и строку var для имени человека, который хочет прокомментировать. Моя проблема в том, что я не смог представить новый комментарий.Показать комментарии asp mvc

Вот моя модель класса

public class difficultecommentaires 
{ 
    public difficulte diff { get; set; } 
    public IList<commentaire> comms { get; set; } 
    public string pseudo { get; set; } 
    public string nouveau { get; set; } 
} 

Вот мой метод действия для подачи комментарий

 [HttpPost] 
    public ActionResult NewComment(int id_diff, string pseudo, string contenu) 
    { 
     difficulte d = new difficulte(); 
     using (BDGestionEntities bd = new BDGestionEntities()) 
     { 
      var query = from j in bd.difficultes where (j.id_diff == id_diff) select j; 
      foreach (var k in query) 
       d = k; 
     } 
     commentaire com = new commentaire(); 
     com.pseudo = pseudo; 
     com.difficulte= d; 
     com.contenu = contenu; 
     db.AddTocommentaires(com); 
     db.SaveChanges(); 
     ObtenirDifficulte(id_diff); 
     return View(); 
    } 

А вот мой взгляд

@model GestionProjet.Models.difficultecommentaires 

@{ 
    ViewBag.Title = "ObtenirDifficulte"; 
} 

<h2>Détails</h2> 

<fieldset> 
<table> 
<tr><td> 
    <label><b>Titre de la difficulté :</b></label></td><td>@Html.DisplayFor(m=>m.diff.titre)</td></tr> 

    <tr><td> 
    <label><b>Description :</b></label></td><td>@Html.DisplayFor(m=>m.diff.description)</td></tr> 
    </table> 
    <table> 
    @foreach (var k in Model.comms) 
    { 

     <tr><td>@k.pseudo a dit :</td><td> 
     @k.contenu</td></tr> 

    } 
    </table> 
    <br /> 
    <table> 
    <tr><label><b>Nouveau commentaire</b></label></tr> 
    <tr> 
    <td><b>Nom :</b></td><td>@Html.TextBoxFor(m=>m.pseudo)</td> 
    </tr> 
    <tr> 
    <td><b>Commentaire :</b></td><td>@Html.TextAreaFor(m=>m.nouveau)</td> 
    </tr> 
    </table> 
    @Html.ActionLink("Ajouter", "NewComment", new { Model.diff.id_diff, Model.pseudo , Model.nouveau}) 

</fieldset> 
<p> 
<a href="@Url.Action("Index")"><img src="~/Images/retour.png" alt =""/></a> 
</p> 

А вот моя модель (часть трудности)

enter image description here

Я думаю, что проблема заключается в параметрах моей ссылки действий. I ошибка нулевого значения. Как я могу это решить.

ответ

1

По внешнему виду вы используете ActionLink, который будет выполнять GET (передавая параметры, которые вы указали как параметры маршрута, но не значения элемента формы, т. Е. Новый комментарий.) Можно попробовать что-то вроде ниже:

@Html.BeginForm("Ajouter", "NewComment", FormMethod.Post, new { id_diff = Model.diff.id_diff }) 
    {   
     <table> 
      <tr><label><b>Nouveau commentaire</b></label></tr> 
      <tr> 
      <td><b>Nom :</b></td><td>@Html.TextBoxFor(m=>m.pseudo)</td> 
      </tr> 
      <tr> 
      <td><b>Commentaire :</b></td><td>@Html.TextAreaFor(m=>m.nouveau)</td> 
      </tr> 
     </table> 

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

и ваши действия принимают:

[HttpPost] 
public ActionResult NewComment(int id_diff, string pseudo, string contenu) 
{ 
+0

я получил ошибку нулевое значение. Параметры неверно переданы. – Kira

+0

попробуйте изменить объявление формы на @ Html.BeginForm («Ajouter», «NewComment», FormMethod.Post), а затем используйте @ Html.HiddenFor (m => m.Diff.id_diff) – MiiisterJim

+1

или попробуйте изменить ваше действие, чтобы принять модель и оставить привязку модели .net, чтобы заботиться о остальном, например публичный ActionResult NewComment (модель трудных моделей) – MiiisterJim

Смежные вопросы