28

私は最初の MVC アプリケーションを構築しています。データベースに 3 つの列を含むテーブルがあります。

  1. ID → 主キー
  2. ユーザー名
  3. パスワード

レコードの編集リンク編集をクリックすると、次の例外がスローされます。

パラメーター ディクショナリには、'MvcApplication1.Controllers.UserController' のメソッド 'System.Web.Mvc.ActionResult Edit(Int32)' の null 非許容型 'System.Int32' のパラメーター 'id' の null エントリが含まれています。オプションのパラメーターは、参照型または null 許容型であるか、オプションのパラメーターとして宣言する必要があります。パラメータ名: パラメータ

ここに私の編集コードがあります:

public ActionResult Edit(int id, User collection)
{
    UserDBMLDataContext db = new UserDBMLDataContext();
    var q = from abc in db.User_Login_Details
            where abc.Id == id
            select abc;

    IList lst = q.ToList();

    User_Login_Details userLook = (User_Login_Details)lst[0];

    userLook.Username = collection.UserName;
    userLook.Password = collection.Password;
    db.SubmitChanges();
    return RedirectToAction("Index");                  
}
4

15 に答える 15

42

URLにパラメーターが必要ですが、id指定していません。そのような:

http://yoursite.com/controller/edit/12
                                    ^^ missing
于 2013-08-05T07:38:56.530 に答える
18

あなたの WebApiConfig>>Register () に変更する必要があります

config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }

ここでrouteTemplate、が追加されます{action}

于 2015-01-09T08:04:12.033 に答える
3

このエラーが発生するのは、ASP.NET MVC がアクション メソッドの id パラメーターに提供する id パラメーター値を見つけられないためです。

URL の一部 ("/Home/Edit/123")、クエリ文字列パラメーター ("/Home/Edit?id=123")、または POSTed パラメーター (必ず<input type="hidden" name="id" value="123" />HTMLフォームのようなもの)。

または、idパラメーターを null 許容の int ( Edit(int? id, User collection) {...}) にすることもできますが、id が null の場合、何を編集すればよいかわかりません。

于 2013-08-05T07:42:26.210 に答える
0

これが他の誰かに役立つ場合に備えて。このエラーは、開いているタブとしてビューがあり、そのタブがパラメーターに依存している場合に、Visual Studio で発生する可能性があります。

現在のビューを閉じてアプリケーションを起動すると、アプリは「正常に」起動します。ビューが開いている場合、Visual Studio はこれを、現在のビューを実行する必要があると解釈します。

于 2015-12-15T16:53:56.567 に答える