2016-08-30 2 views
0

의 매개 변수 '_id'에 대한 null 항목이 있습니다 (간단한 전화 번호부 프로젝트 임) 목록의 행 (전자 필기장에서 연락처)을 삭제하려는 경우 사용자 프레스 내가이 정보의 표시 및 사용자 여기 에서 확인을 얻으려면 버튼을 삭제하는 것은보기 코드를매개 변수 사전에 nullable 형식 'System.Int32'

@model Project1.Models.EF_Model.Phone_book 
@{ 
    ViewBag.Title = "Delete"; 
} 
<h2>Delete</h2> 
<h3>Are you sure you want to delete this?</h3> 
<div> 
    <h4>Product</h4> 
    <hr /> 
    <dl class="dl-horizontal"> 
     <tr> 
     <dt> 
      @Html.DisplayNameFor(model => model.First_Name) 
     </dt> 
     <td> 
      @Html.DisplayFor(model => model.First_Name) 
     </td> 
     <dt> 
      @Html.DisplayNameFor(model => model.Last_Name) 
     </dt> 
     <dd> 
      @Html.DisplayFor(model => model.Last_Name) 
     </dd> 
     <dt> 
      @Html.DisplayNameFor(model => model.Number) 
     </dt> 
     <dd> 
      @Html.DisplayFor(model => model.Number) 
     </dd> 
     <dt> 
      @Html.DisplayNameFor(model => model.Email) 
     </dt> 
     <dd> 
      @Html.DisplayFor(model => model.Email) 
     </dd> 
     <dt> 
      @Html.DisplayNameFor(model => model.Address) 
     </dt> 
     <dd> 
      @Html.DisplayFor(model => model.Address) 


    </dd> 
    </tr> 
    </dl> 
    @using (Html.BeginForm()) 
    { 
     @Html.AntiForgeryToken() 
     <div class="form-actions no-color"> 
     <input type="submit" value="Delete" class="btn btn-default" /> | 
      @Html.ActionLink("Back to List", "Index") 
     </div> 
    } 
</div> 

이며 내 컨트롤러에서 나는 기초를 첵하고

[HttpGet] 
public ActionResult Delete(int? _id) 
{ 
    return View(); 
} 
#endregion 

#region [- Post -] 

[HttpPost] 
public ActionResult Delete(int _id) 
{ 
    if (ModelState.IsValid) 
    { 
     Ref_ViewModel = new ViewModel.ViewModel(); 
     Ref_ViewModel.Delete(_id); 
    } 
    else 
    { 
     ViewBag.Massage = "Choose a Contact"; 
    } 
    return View(); 
} 
삭제 얻을 수있는 모델에 ID를 보내

확인보기에서 선택한 데이터를 어떻게 표시합니까?

난 그것을 삭제 버튼을 누르면도 나는 파라미터 사전 '에있어서 비 - 널 타입'선택 System.Int32 '의 파라미터'_id '에 대한 널 엔트리를 포함

이 오류를받을 때 System.Web.Mvc.ActionResult Delete (Int32) 'Project1.Controllers.HomeController'에서. 선택적 매개 변수는 참조 유형, 널 입력 가능 유형 또는 선택적 매개 변수로 선언되어야합니다. 매개 변수 이름 : 나는 그것을 삭제 버튼을 누를 때, 나는 그것이 null 값을 반환 추측하거나 내가 routconfig와 함께 몇 가지 일을해야

매개 변수, pls는 내가 2를 위해 O를 일하고 있어요 도와주세요 일 (Uvc를 배우기 시작한 것을 알고 있어야 함)

답변

1

MVC는 null이 아닌 매개 변수가 int _id이고 값이 제공되지 않는 메서드가 있음을 알려줍니다. 즉, 웹 서버에 데이터를 보내면 양식 모음에 _id이라는 값이 없습니다.

HTML로 양식을 제출하면 서버에 기본적으로 전송되는 데이터는 요소뿐입니다. 따라서 서버에 _id 값을 보내려면 양식 내에 _id이라는 이름의 요소를 만들 수 있습니다.

MVC에는 뷰 모델을 기반으로 입력을 생성하는 도우미 함수가 있습니다. @Html.HiddenFor(model => model._id).

@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 
    <div class="form-actions no-color"> 
    @Html.HiddenFor(model => model._id) 
    <input type="submit" value="Delete" class="btn btn-default" /> | 
     @Html.ActionLink("Back to List", "Index") 
    </div> 
} 

행운을 빌며 MVC. 여기에있는 자습서를 사용해 보시기 바랍니다. http://www.asp.net/mvc/overview/getting-started/introduction/getting-started

1

당신은 양식 제출을하고 있으며 귀하의 행동은 HttpPost로 표시되어 있으므로 mvc로 돌아갈 것은 Project1.Models.EF_Model.Phone_book 개체입니다.

MVC가 매개 변수를 바인딩 할 때 _id에 아무것도 바인딩하지 않도록 컨트롤러에서 _id 매개 변수를 가져와야한다는 것을 알려주지 않습니다.

해결하려면 _id를 컨트롤러로 다시 전달하는 방법에 대한 답변 this을 참조하십시오.

관련 문제