2016-07-01 13 views
0

類似のトピックはすべて解決されていますが、似たようなミスは私と同じです。パラメータ 'id'のヌルエントリ

モデル:

public class CountriesViewModel 
{ 
    public int BuffId { get; set; } 
    public string CountryId { get; set; } 
    public string Name { get; set; } 
} 

ビュー:

@model List<BTGHRM.Models.CountriesViewModel> 
    @{ 
     WebGrid grid = new WebGrid(Model, canSort: false, rowsPerPage: 15); 
     int row = 0; 
    } 


    @if (Model.Any()) 
    { 

     @grid.GetHtml(
       tableStyle: "table", 
       headerStyle: "table_HeaderStyle", 
       footerStyle: "table_PagerStyle", 
       rowStyle: "table_RowStyle", 
       alternatingRowStyle: "table_AlternatingRowStyle", 
       selectedRowStyle: "table_SelectedRowStyle", 
       columns: grid.Columns(

       grid.Column("Name", @Resources.Localization.country, format: @<text> 
         <span class="display-mode"><label id="NameLabel">@item.Name</label></span> 
         @Html.TextBox("Model[" + (++row - 1).ToString() + "].Name", (object)item.Name, new { @class = "edit-mode" }) 
       </text>, style: "p40"), 

         grid.Column("", "", format: @<text> 
         @Html.Hidden("Model[" + (row - 1).ToString() + "].BuffId", (object)item.BuffId, new { @class = "edit-mode" }) 
        </text>, style: "p13"), 

      grid.Column("", "", format: @<text> 
         <a href="DeleteCountryRecord/@item.BuffId" id="@item.BuffId" class="link_button delete-button display-mode">@Resources.Localization.delete</a> 
      </text>) 
       ) 
      ) 
    } 

はアクションメソッドにそのID(buffId)を送信することによって、行を削除したいI`d:

public ActionResult DeleteCountryRecord(int BuffId) 
    { 
     using (var db = new HRMEntities()) 
     { 
      Country RemovableLine = db.Countries.Find(BuffId); 
      try 
      { 
       db.Countries.Remove(RemovableLine); 
      } 
      catch 
      { 
       TempData["Message"] = App_GlobalResources.Localization.error; 
      } 
      db.SaveChanges(); 
     } 
     return RedirectToAction("CountryCodes"); 
    } 

私はすべてを取得しますIDは右ですが、私は間違いがあります

パラメータ辞書に、 'BTGHRM.Controllers.AdministrationController'の 'System.Web.Mvc.ActionResult DeleteCountryRecord(Int32)'メソッドのnullable型 'System.Int32'のパラメータ 'BuffId'のnullエントリが含まれています。オプションのパラメータは、参照型、null可能型、またはオプションのパラメータとして宣言する必要があります。 パラメータ名:パラメータ

でも見ることができ、ボタンのクリックでgeneredされたリンクで、そのIDを右に掲載されます。

http://localhost:59763/Administration/DeleteCountryRecord/17

私の問題である可能性がありますどのような?

答えて

3

BuffIdという名前のルートが定義されていることを確認する必要があります。つまり、アクションメソッドのシグネチャでパラメータの名前をidに変更することができます。デフォルトはルーティングテーブルにあるものとします。

あなたが新しいルートを追加した場合、それはあなたのルーティングの残りの部分(おそらくRouteConfig.cs)で行く、そしてそれは、デフォルト1以上になることを確認します:

routes.MapRoute(
    name: "DeleteCountryRecord", 
    url: "Administration/DeleteCountryRecord/{BuffId}", 
    defaults: new { controller = "Administration", action = "DeleteCountryRecord" } 
); 
関連する問題