0

私のasp.netmvcアプリケーションには次の2つのアクションメソッドがあります。

  public ActionResult Edit(int id)
    {
        cpd_certificates cpd_certificates = db.Certificate.Find(id);

        return View(cpd_certificates);
    }

    //
    // POST: /Home/Edit/5


   [HttpPost]
    public ActionResult Edit(cpd_certificates cpd_certificates)
    {
        if (ModelState.IsValid)
        {
            db.Entry(cpd_certificates).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Details");
        }

        return View(cpd_certificates);
    }

これは、パラメータが渡される方法です。

 @Html.ActionLink("Edit", "Edit", new {   id=item.CertificateNo  })

以下は、上記の2つのメソッドを呼び出す私のビューの一部です。

@model IEnumerable<onlineCPD.Models.cpd_certificates>
<table>
<tr>
    <th>
        QuizNo
    </th>
    <th>
        Received
    </th>
@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.QuizNo)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Received)
    </td>
  <td>
        @Html.ActionLink("Edit", "Edit", new {   id=item.CertificateNo  })
</td>
}

</table>

これが私のルートです:

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

    }

これは私の詳細メソッドのパーツコードです。

public ActionResult Details(string sortOrder, string currentFilter, string searchString, int? page, int id)
        {
var certificateDetails = db.Certificate.Where(p => p.ID == id);
 return View(certificateDetails.ToPagedList(pageNumber, pageSize));

[保存]をクリックすると、次のエラーが発生します。

パラメータディクショナリには、メソッド'System.Web.Mvc.ActionResult Details(System.String、System.String、System.String、System.Nullable`のnull許容型ではないタイプ'System.Int32'のパラメータ'id'のnullエントリが含まれています。 1 [System.Int32]、Int32)'in'onlineCPD.Controllers.HomeController'。オプションパラメータは、参照型またはnull許容型であるか、オプションパラメータとして宣言されている必要があります。パラメータ名:パラメータ

私は自分の投稿でパラメータを渡すことを想定していますが、これを行うにはどうすればよいですか?ここでは経験が浅いので、誰かが説明できます。

4

1 に答える 1

3

Edit次のような方法を修正する必要があります。

[HttpPost]
public ActionResult Edit(cpd_certificates cpd_certificates)
{
    if (ModelState.IsValid)
    {
        db.Entry(cpd_certificates).State = EntityState.Modified;
        db.SaveChanges();
        return RedirectToAction("Details", new { id = cpd_certificates.id });
    }

    return View(cpd_certificates);
}

アクションリンクでこれを行います:

 @Html.ActionLink("Edit", "Edit", new {   id=item.QuizNo  })

または、次のように、idの許容可能なnull許容値の詳細署名を変更してみてください。

Details(string sortOrder, string currentFilter, string searchString, int? page, int? id)
于 2012-11-28T13:32:09.157 に答える