我的代码控制器中的索引错误?

时间:2018-03-16 17:11:12

标签: javascript asp.net

当我运行项目索引时,它会显示此错误。我用谷歌搜索了它,但我没有找到适当的解决方案来解决这个错误。所以,请有人帮助我。

错误讯息:

  

“参数字典包含参数的空条目   '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);
        }
    }

2 个答案:

答案 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);
    }

现在参数将接受空值。