0

プロジェクトのヌルエントリが含まれています。問題が発生しました。Fluent Nhibernate彼のパラメータ辞書には、パラメータ

"パラメータ辞書には、 'BlogNewCMS.Controllers.HomeController'のメソッド 'Void Delete(Int32)'のnullable型 'System.Int32'のパラメータ 'Id'のnullエントリが含まれています。参照可能な型、null可能な型、またはオプションのパラメータとして宣言することができます。 パラメータ:

コントローラ;

[HttpPost] 
    public void Delete(int Id) 
    { 

     using (var session = FluentNHibernateConnectingAdmin.OpenSession()) 
     { 

      using (var transaction = session.BeginTransaction()) 
      { 
       var article = session.QueryOver<Article>().Where(x => x.Id == 3).SingleOrDefault(); 

       session.Delete(article); 

       transaction.Commit(); 
      } 
     } 
    } 

Page。

     @foreach (var active in Model) 
        { 


         using (Html.BeginForm("Delete", "home", FormMethod.Post)) 
         { 

          <tr role="row" class="gradeA odd"> 
           <td class="sorting_1">@active.UserID</td> 
           <td>@active.Topic</td> 
           <td>@active.TopicDetail</td> 
           <td class="text-center"> 
            <input type="submit" class="btn btn-danger" name="name" value="Sil" /> 

           </td> 
          </tr> 

        } 
         } 

ルーティング;

  routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 


     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

答えて

0

あなたの削除メソッドには、IDパラメータintが必要です。しかし、フォームにはフォームがないので、フォームを送信するときにフォームを渡さないようにします。

はまた、あなたは、おそらくそれが応答を返すように、あなたのdeleteメソッドに戻り値の型を追加したい"Id"

using (Html.BeginForm("Delete", "home", FormMethod.Post)) 
{ 
    <tr role="row" class="gradeA odd"> 
      <td class="sorting_1">@active.UserID</td> 
      <td>@active.Topic</td> 
      <td>@active.TopicDetail</td> 
      <td class="text-center"> 
       <input type="submit" class="btn btn-danger" name="name" value="Sil" /> 
       <input type="hidden" name="Id" value="@active.Id" /> 
      </td> 
    </tr> 
} 

に設定するname属性の値を使用して、フォームに1つの入力フィールドを追加します。

public ActionResult Delete(int id) 
{ 
    // to do : Delete 
    return RedirectToAction("DeletedSuccessfully"); 
    // Assuming you have an action method called DeletedSuccessfully exist 
    // which shows the "Success message to user 
} 
関連する問題