当我运行项目索引时,它会显示此错误。我用谷歌搜索了它,但我没有找到适当的解决方案来解决这个错误。所以,请有人帮助我。
错误讯息:
“参数字典包含参数的空条目 'chapterIdS'为非可空类型'System.Int32'的方法 'System.Web.Mvc.ActionResult Index(Int32)'中 'opr.Controllers.QuizeController'。可选参数必须是a 引用类型,可空类型,或声明为可选 参数。 参数名称:参数“
这是我的索引代码:
@model List<opr.Data.Chapter>
@{
ViewBag.Title = "Index";
}
<h4>Select Chapter</h4>
<div class="container">
<div class="alert-info form-control m-auto w-75 custom-form col-6">
@using (Html.BeginForm("Index", "Quize", FormMethod.Get))
{
<h4>Quizes</h4>
<hr />
foreach (var std in Model)
{
<div class="row">
<div class="col-4"></div>
<div class="col-4">
@Html.RadioButton("searchBy",@std.Chapter_Name, true)
<text>@std.Chapter_Name</text>
</div>
<div class="col-4"></div>
</div>
<hr />
<h3>Questions</h3>
<hr />
<table>
<tbody>
@foreach (var quesion in std.C_QuestionTable)
{
<tr>
<td>
<h5>@quesion.QuestionText</h5>
</td>
</tr>
foreach (var answer in quesion.C_AnswerTable)
{
<tr>
<td>@answer.Options</td>
</tr>
}
}
</tbody>
</table>
}
<input type="submit" value="Create Question" />
}
</div>
</div>
this my controller
public class QuizeController : Controller
{
examsEntities db = new examsEntities();
public ActionResult Index(int chapterIdS)
{
List<C_QuestionTable> ques = new List<C_QuestionTable>();
ViewBag.ques = db.C_QuestionTable.Where(w => w.Id == chapterIdS).ToList();
List<Chapter> model = new List<Chapter>();
model = db.Chapters.Where(w=>w.Id==chapterIdS).ToList();
return View(model);
}
}
答案 0 :(得分:0)
默认路由需要名为id
的可选参数:
public ActionResult Index(int id)
{
...
}
因此,如果您的网址看起来像.../Quize/Index/1
,则需要调用此参数id
,或者为此控制器注册自己的路由。
答案 1 :(得分:0)
试试这个...
public ActionResult Index(int? chapterIdS)
{
List<C_QuestionTable> ques = new List<C_QuestionTable>();
ViewBag.ques = db.C_QuestionTable.Where(w => w.Id == chapterIdS).ToList();
List<Chapter> model = new List<Chapter>();
model = db.Chapters.Where(w=>w.Id==chapterIdS).ToList();
return View(model);
}
现在参数将接受空值。