2011-08-08 2 views

답변

0

선택한 항목이 게시물의 일부인 것으로 가정하면 컨트롤러가 현재 무엇인지 알고 있습니다. 어떤 항목이 선택되어야 하는지를 나타내는 ViewData 사전 엔트리를 가지기 만하면됩니다. 뷰에서 값을 확인하고 null이 아닌 경우 적절한 옵션을 선택하십시오.

1

MVC는 ViewState를 사용하지 않으므로 값 지속성을 직접 관리해야합니다. 일반적으로 이것은 모델을 통해 수행됩니다.

public class MyViewModel { } 

그리고 컨트롤러 : 그래서, 당신이보기 모델, 예를 들어이 주어진 이제

public class MyController : Controller 
{ 
    public ActionResult Something() 
    { 
     return View(new MyViewModel()); 
    } 

    public ActionResult Something(MyViewModel model) 
    { 
     if (!ModelState.IsValid) 
      return View(model); 

     return RedirectToAction("Index"); 
    } 
} 

을, 당신은 데이터 뷰에 다시 모델을 통과 할 때 (아마도 잘못된 - 유효성 검증에 실패했습니다) 당신이 당신의 DropDownListFor 방법을 사용할 때, 단지 값 전달 :

@Model.DropDownListFor(m => m.Whatever, new SelectList(...)) 

... 등

MVC의 모델 바인딩은 모델로 데이터를 읽는 것을 처리 할 것이므로 같은 값을 다시 표시하려면 뷰에 다시 전달해야합니다. 이처럼

2

어떻게 좀 :

[HttpPost] 
    public ActionResult Create(FormCollection collection) 
    { if (TryUpdateModel(yourmodel)) 
      { //your logic 
       return RedirectToAction("Index"); 
      } 
      int selectedvalue = Convert.ToInt32(collection["selectedValue"]); 
      ViewData["dropdownlist"] = new SelectList(getAllEvents.ToList(), "EventID", "Name", selectedvalue);// your dropdownlist 
      return View(); 
    } 

그리고보기 :

<%: Html.DropDownListFor(model => model.ProductID, (SelectList)ViewData["dropdownlist"])%> 
2

더 쉬운, 당신은 당신의 ActionResult 입력 매개 변수에 드롭 다운의 이름 (들)을 포함 할 수 있습니다. 드롭 다운은 양식 태그에 있어야합니다. ActionResult가 게시되면 ASP.Net은 쿼리 문자열, 양식 값 및 쿠키를 반복합니다. 드롭 다운 이름을 포함하는 한 선택한 값이 보존됩니다.

여기에는 ActionResult에 게시하는 3 개의 드롭 다운이있는 양식이 있습니다. 드롭 다운 이름은 대소 문자를 구분하지 않습니다 : ReportName, Year 및 Month입니다.

//MAKE SURE TO ACCEPT THE VALUES FOR REPORTNAME, YEAR, AND MONTH SO THAT THEY PERSIST IN THE DROPDOWNS EVEN AFTER POST!!!! 
    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult ReportSelection(string reportName, string year, string month) 
    { 
     PopulateFilterDrowdowns(); 
     return View("NameOfMyView"); 
    } 
0

HttpRequestBase 개체를 사용하십시오. 뷰에서 이 작동합니다 :

@Html.DropDownList("mydropdown", ViewBag.Itens as IEnumerable<SelectListItem>, new { value = Request["mydropdown"] }) 
0

당신이 컨트롤러의 동작 방법의 목록 데이터 소스 드롭 다운을 구축하는 경우 사용자가 선택한 값을 보낼 수 있습니다이를

컨트롤러 :

public ActionResult Index(int serviceid=0) 
      { 


      // build the drop down list data source 
       List<Service> services = db.Service.ToList(); 
       services.Insert(0, new Service() { ServiceID = 0, ServiceName = "All" }); 
       // serviceid is the selected value you want to maintain 
       ViewBag.ServicesList = new SelectList(services, "ServiceID", "ServiceName",serviceid); 

       if (serviceid == 0) 
       { 
        //do something 
       } 
       else 
       { 
        // do another thing 

       } 
       return View(); 
      } 

보기 :

//ServiceList is coming from ViewBag 
@Html.DropDownList("ServicesList", null, htmlAttributes: new { @class = "form-control" }) 
관련 문제