0

私は mvc .net Web アプリケーションに取り組んでいます。私は困難を含むデータベース (困難と呼ばれるテーブル) を持っており、各困難にはコメントがあります。私の見解では、対応するコメントと新しいコメントのテキスト領域、およびそれを送信するためのボタンを使用して、すべての困難を示したいと考えています。難易度とコメント、新しいコメントの内容用の文字列 var、およびコメントしたい人の名前用の文字列 var を含むモデル クラスを作成しました。私の問題は、新しいコメントを送信できなかったことです。

ここに私のモデルクラスがあります

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>

そして、これが私のモデル設計です(困難な部分)

ここに画像の説明を入力

アクションリンクのパラメータに問題があると思います。null値のエラーです。どうすればこれを解決できますか。

4

1 に答える 1

1

見た目では、GETを実行するActionLinkを使用しています(ルートパラメータとして指定したパラメータを渡しますが、フォーム要素の値、つまり新しいコメントは渡しません)。以下のようなものを試すことができます:

@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)
{
于 2012-08-03T14:34:34.330 に答える