【问题标题】:Display comments asp mvc显示评论asp mvc
【发布时间】:2012-08-03 13:38:22
【问题描述】:

我正在开发一个 mvc .net Web 应用程序。我有一个包含困难的数据库(称为困难的表),每个困难都有 cmets。 在我看来,我想用相应的 cmets 和一个用于新评论的文本区域和一个提交它的按钮来展示每一个困难。 我创建了一个模型类,其中包含一个难度和 cmets、一个用于新评论内容的字符串 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>

这是我的模型设计(困难部分)

我认为问题出在我的操作链接的参数中。我是空值错误。 我该如何解决这个问题。

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-3 entity-framework razor


    【解决方案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)
    {
    

    【讨论】:

    • 我得到了空值错误。参数未正确传递
    • 尝试将表单声明更改为@Html.BeginForm("Ajouter", "NewComment", FormMethod.Post) 然后使用@Html.HiddenFor(m => m.Diff.id_diff)跨度>
    • 或尝试更改您的操作以接受模型并离开 .net 模型绑定以处理其余部分,例如public ActionResult NewComment(difficultecommentaires model)
    猜你喜欢
    • 2013-06-05
    • 2013-03-14
    • 2019-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    相关资源
    最近更新 更多