html - asp.net mvc에서 비활성 드롭 다운 값 얻기




asp.net-mvc post (3)

당신은 또한 자신의 DropDownListFor 과부하를 만들 수 있습니다.이 과부하는 bool disabledbool disabled 매개 변수를 받아들이고 무거운 짐을 if disablethisfield then ...if disablethisfield then ... 복잡하지 않습니다.

이 라인들 사이에 뭔가가있을 수 있습니다 :

public static MvcHtmlString DropDownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList, bool disabled)
{
    if (disabled)
        return MvcHtmlString.Create(htmlHelper.HiddenFor(expression).ToString() + htmlHelper.DropDownListFor(expression, selectList, new { disabled="disabled" }).ToString());
    else
        return htmlHelper.DropDownListFor(expression, selectList);
}

DropDownListFor만으로 6 오버로드가 있으므로 monkeycoding이 많지만 결국 imho에서 돈을 지불합니다.

ASP.NET MVC 응용 프로그램이 있습니다. 내 페이지 (HTML SELECT)에 여러 개의 드롭 다운 목록이 표시되는 경우 사용자가 하나씩 선택하면 해당 항목을 비활성화해야합니다. 사용자가 컨트롤러에 다시 게시 할 때 함수 (작업 메서드) 매개 변수로 null이 표시됩니다. 검색 한 결과 HTML이 양식 데이터에서 사용할 수없는 필드의 값을 보내지 않는다는 것을 알았습니다. 비활성화 된 속성을 읽기 전용으로 바꾸면 드롭 다운 작업이 렌더링되므로 작동하지 않습니다.

나는 사용자가 계속해서 자바 스크립트를 사용하여 동적으로 드롭 다운을 생성하고있다. 따라서 단일 드롭 다운이 아니라 사용자가 원하는만큼의 드롭 다운이 있습니다.

누군가가 값을 가져야하는 방법을 말해 줄 수 있습니까?


이것이 비활성화 된 컨트롤의 기본 동작입니다. 숨겨진 필드를 추가하고이 숨겨진 필드에 DropDownList의 값을 설정하고이 작업을하는 것이 좋습니다.

같은 것 :

//just to create a interface for the user
@Html.DropDownList("categoryDump", (SeectList)ViewBag.Categories, new { disabled = "disabled" });
// it will be send to the post action
@Html.HiddenFor(x => x.CategoryID)

한 가지 방법은 드롭 다운 목록을 disabled="disabled" 로 만들고이 값을 서버에 보낼 수있는 같은 이름과 값을 가진 숨겨진 필드를 포함시키는 것입니다.

@Html.DropDownListFor(x => x.FooId, Model.Foos, new { disabled = "disabled" })
@Html.HiddenFor(x => x.FooId)

javascript를 사용하여 드롭 다운을 동적으로 사용 중지해야하는 경우 드롭 다운의 현재 선택한 값을 사용 중지 한 후 숨겨진 필드에 간단히 할당하십시오.





drop-down-menu