我正在开发一个mvc .net web应用程序。我有一个包含困难的数据库(一个名为difficultes的表),每个难点都有注释。 在我看来,我希望用相应的评论和新评论的文本区域以及提交它的按钮来显示每个难题。 我创建了一个包含难度和注释的模型类,一个用于新注释内容的字符串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>
这是我的模型设计(困难部分)
我认为问题出在我的动作链接的参数中。我是一个空值的错误。 我该怎么解决这个问题呢。
答案 0 :(得分:1)
通过它的外观你正在使用一个ActionLink来执行GET(传递你给出的路由参数的参数,但不传递表单元素值,即新的注释。)可以尝试类似下面的内容:< / p>
@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)
{