development

ASP.NET MVC에서 비활성화 된 입력을 제출하려면 어떻게합니까?

big-blog 2020. 8. 29. 12:24
반응형

ASP.NET MVC에서 비활성화 된 입력을 제출하려면 어떻게합니까?


ASP.NET MVC에서 비활성화 된 입력을 제출하려면 어떻게합니까?


readonly="readonly"대신 필드를 만들 수 없습니까 disabled="disabled"? 읽기 전용 필드 값은 사용자가 여전히 편집 할 수없는 상태에서 서버에 제출됩니다. 하지만 SELECT태그는 예외입니다.


모두에게 감사 드려요:

이 문제를 해결 한 방법 :

document.getElementById("Costo").readOnly = true;
document.getElementById("Costo").style.color = "#c0c0c0";

노트 :

대답에 대한 정보를 얻었지만 편집되었습니다.


@ppumkin 은이 답변 에 대한 그의 의견에서 이것을 언급 했지만 장애인 데이터 제출에 대한 다른 리소스를 찾을 수 없었기 때문에 강조하고 싶었습니다 <select>. 나는 또한 선택이 <input>s가 아니라 "입력"이기 때문에 질문과 관련이 있다고 생각합니다 .

비활성화 된 선택 및 모든 정렬에 대해 숨겨진 필드를 포함하십시오.

예:

@Html.DropDownListFor(model => model.SelectedID, ... , new { disabled = "disabled"}) @* Won't be posted back *@
@Html.HiddenFor(model => model.SelectedID) @* Will be posted back *@

주의 : 이렇게하면 동일한 ID를 가진 두 개의 태그가 페이지에 삽입됩니다. 이는 실제로 유효한 HTML이 아니며 자바 스크립트에 골치 아픈 원인이 될 수 있습니다. 저에게는 html로 드롭 다운 값을 설정하는 자바 스크립트가 id있으며 숨겨진 필드를 먼저 입력하면 자바 스크립트가 select.


일반적으로 "읽기 전용"이지만 서버로 다시 제출해야하는 필드가있는 경우 디스플레이를 비활성화 (또는 단순히 텍스트) 한 다음 동일한 이름의 숨겨진 필드를 추가합니다. 필드가 실제로 서버 측에서 수정되지 않았는지 확인해야합니다. 작업의 모델에서 업데이트하지 말고 오류가있는 경우에도 모델 상태는 여전히 정확합니다.


양식을 제출하기 전에 다음과 같은 코드를 사용할 수도 있습니다.

$(":disabled", $('#frmMain')).removeAttr("disabled");

아래와 같은 편집기 템플릿을 만들 수 있습니다.

CSS

.disabled {
    background-color:lightgray;
}

편집기 템플릿

@model string
@Html.TextBoxFor(x => x,new {@class="disabled", @readonly=true })

설계 상 브라우저는이를 지원하지 않습니다.

readonly서버에 값을 제출할 수 있도록 만들 거나 readonlySelect와 같은 속성 으로 여전히 사용할 수있는 컨트롤을 다루는 경우 CSS 스타일 pointer-events: none;추가 하여 비대화 형으로 만듭니다.

일종의 해킹이지만 작동합니다! 자바 스크립트를 사용하지 않고 제출 버튼으로 직접 양식을 제출할 때도 작동합니다. 추가 작업이 필요하지 않습니다!

예 :

<select asp-for="TypeId" 
   asp-items="@(new SelectList(await TypeRepository.FetchTypesAsync(), "TypeId", "Name"))"
   class="form-control form-control-sm" 
   readonly 
   style="pointer-events: none;">
</select>

비활성화되었지만 선택된 확인란을 처리하고 값을 게시하려면 @ Html.CheckBoxFor 숨겨진 필드 앞에 숨겨진 필드가 나타나는지 확인해야합니다.

다음은 내가 답을 찾은 링크입니다. http://davecallan.com/posting-disabled-checkboxes-mvc-razor-views/#comment-11033


확장 Tasos '( ": disabled", $ ('# xxxForm ')). removeAttr ( "disabled"); 당신이 사용할 수있는:

$("#xxxForm").submit(function (e) {
    e.preventDefault();
    var form = this;
    $('#Field1')[0].disabled = false;
    $('#Field2')[0].disabled = false;
    ...
    $('#FieldN')[0].disabled = false;
    form.submit(); // submit bypassing the jQuery bound event
});

$ ( "# iD"). attr ( "style", "pointer-events : none; background-color : rgb (220,220,220)");

이것은 asp.net에서 모델 값을 제출하는 데 도움이됩니다.


사용하지 않도록 설정하면 값이 손실되기 때문에 일반적으로 CheckBox 또는 CheckBoxFor에 대해이 방법을 사용합니다. 읽기 전용은 확인란에서도 작동하지 않습니다.

@Html.DisplayFor(m => m.Order.Transfer)
@Html.HiddenFor(m => m.Order.Transfer)

해당 뷰에 연결된 ViewModel에서 해당 속성을 [필수]로 만드십시오.

참고 URL : https://stackoverflow.com/questions/2700696/how-do-i-submit-disabled-input-in-asp-net-mvc

반응형