2011-03-26 3 views
0

면도날 웹 사이트가있는 asp.NET mvc 3가 있습니다. 다음과 같은 형식으로 데이터베이스의 데이터 목록을 표시하는 웹 페이지가 있습니다.포스트 백 형식의 기본 키?

<input type="text" name="blah1" value="blah" /> 
<input type="text" name="blah2" value="blahblah" /> 
<input type="text" name="blah3" value="blahblah" /> 

위의 각 행은 기본 키와 관련됩니다. 사용자가 제출하여 컨트롤러에 FormCollection을 다시 게시 할 때 각 blah의 기본 키를 가져 오는 방법은 무엇입니까? 해당 행의 기본 키가 들어있는 각 행에 숨겨진 필드를 추가합니까? 그렇다면 FormCollection이 사전 일 뿐이므로 해당 언어가 어떤 언어인지 알 수 있습니까?

답변

0

내가보기 모델 사용을 권장합니다 :

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new[] 
     { 
      new MyViewModel { Id = "1", Text = "blah" }, 
      new MyViewModel { Id = "2", Text = "blahblah" }, 
      new MyViewModel { Id = "3", Text = "blahblah" }, 
     }; 
     return View(model); 
    } 

    [HttpPost] 
    public ActionResult Index(IEnumerable<MyViewModel> model) 
    { 
     // Here you will get a collection of id and text for each item 
     ... 
    } 
} 

당신이 수보기 : 다음 컨트롤러 액션에 당신이보기에 그 모델의 목록을 보낼 것

public class MyViewModel 
{ 
    public string Id { get; set; } 
    public string Text { get; set; } 
} 

과 id에 대한 숨겨진 필드와 값에 대한 텍스트 상자를 사용하십시오.

@model IEnumerable<MyViewModel> 
@using (Html.BeginForm()) 
{ 
    @Html.EditorForModel() 
    <input type="submit" value="OK" /> 
} 

및 해당 필드 g 편집기 템플릿 (~/Views/Shared/EditorTemplates/MyViewModel.cshtml) :

@model MyViewModel 
@Html.HiddenFor(x => x.Id) 
@Html.TextBoxFor(x => x.Text)