2016-08-29 4 views
0

ASP.NET MVC 5 뷰에서 컨트롤러로 전체 객체를 전달하는 방법이 있습니까? 이것은 내 상황 :ASP.NET MVC 5의 뷰에서 컨트롤러로 전체 객체 전달

  • I DB를 테이블에서 모든 행을 표시하는보기
  • 뷰의 모델이는 스캐 폴딩 UPDATE보기
  • 로 연결 데이터의 후
  • 각 행은 링크가 IEnumerable을있다가

업데이트 컨트롤러 메서드에 전체 개체를 전달하여 이전에 폼 데이터를 이전 데이터로 채울 수 있습니까? 컨트롤러 같은

public ActionResult Update(MyType parameter) 
    { 
     return View(parameter); 
    } 

또는 뭔가

@Html.Action("Update me!", "Update", new { objectFromModelList }) 

: 그리고 같은 뭔가. 제발 도와주세요, 나는 이것에 초보자이며 어디서나 답을 찾을 수 없습니다.

+1

전체보기를 게시 할 수 있습니까? –

답변

4

개체가 너무 커질 수 있습니다! 쿼리 문자열에는 브라우저 기반 쿼리를 통해 전달할 수있는 데이터의 양에 제한이 있습니다. 레코드의 고유 한 id 값을 전달하고 작업 메서드에서 db의 전체 레코드를 가져 와서 뷰에 전달하는 것을 고려해야합니다.

@foreach(var item in SomeCollection) 
{ 
    <tr> 
    <td> @Html.Action("Update me!", "Update", new { id = item.Id }) </td> 
    </tr> 
} 

GetItemFromId 방법을 가정 액션 메소드

public ActionResult Update(int id) 
{ 
    var item = GetItemFromId(id); 
    return View(item); 
} 

에서

는 고유 ID 값의 방법/뷰 모델을 돌려줍니다. 기본적으로 db 테이블/저장소의 고유 ID를 사용하여 전체 레코드를 가져옵니다.

+1

아아 내 앞에! 하하 좋은 직업! –

+0

음, 나는 그 지저분한 URL을 피하려고합니다. 예 ... 고마워요. – dzenesiz

2

하여 업데이트보기를 IEnumerable 유형이 아닌 가정하면 ...

당신은 당신이 업데이트보기로 보낼 레코드의 ID을 통과해야

...

같은 :

@Html.Action("Update me!", "Update", new { id = item.ID }) 

는 그런 다음 업데이트 작업은 다음과 같을 것이다 :

[HttpGet] 
public ActionResult Update(int id) 
{ 
    var parameter = db/* connection string variable */.TableName.Find(id); 
    return View(parameter); 
} 

그러면 링크가 적절하게 작동해야합니다.

희망이 도움이됩니다.

+0

도움이됩니다. 감사합니다. – dzenesiz

+1

@ dzenesiz 당신을 환영합니다! 행복한 코딩! –

관련 문제