보기에서, 사용자는 선택 이름 후 ... 표시되는 내용에서C#을 컨트롤러 매개 변수와 함께 @ HTML.Action를 사용하면
<form name=chkAttend method=post onsubmit='return validate(this)'>
<div>
@if (Model.evModel.Participants != null)
{
foreach (var fi in Model.evModel.Participants)
{
<div>
@if (@fi.AttendedFlag != true)
{
<input type="checkbox" id="[email protected]" name="MyCheckboxes" value="@fi.EnrollmentId" />
<label for="[email protected]" aria-multiselectable="True"></label>
<span></span> @fi.EnrollmentId @fi.ParticipantName
}
</div>
}
}
<input type=submit value="Confirm Attendance">
</div>
</form>
을 1 개 이상 이름을 확인 이름을 확인하는 확인하기 위해 함수를 호출합니다. 점검 된 이름은 컨트롤러로 전달되어야합니다. 문제 - 나는 오류 메시지를 받고 있어요 : 오류 49 이름 'ID는'현재 컨텍스트
function validate(form) {
var id = ""
for (var i = 0; i < document.chkAttend.MyCheckboxes.length; i++)
{
if (document.chkAttend.MyCheckboxes[i].checked)
id += document.chkAttend.MyCheckboxes[i].value + ","
}
if (id == "")
{
alert("Place a check mark next to event's Participant")
}
else
{
@Html.Action("ConfirmAttendance", "Admin", new { eventid = @Model.evModel.Id, enrollid =id })
}
return false;
}
에 존재하지 않습니다 어떻게 내 컨트롤러에서 함수에 대한 매개 변수 만 검사 항목을 통과합니까?
서버 측 코드 ('@ Html.Action ...')를 클라이언트 측 코드에 드롭 할 수는 없습니다. 그것은 결코 작동하지 않을 것입니다. 뷰가 반환되기 전에 서버에서 실행되는 Razor와 브라우저에서 실행되는 Javascript 간의 차이점을 알아야합니다. 'id' 변수는 폼이 제출 될 때 실행되는 Javascript에서 생성되기 훨씬 전에 C# 코드가 페이지로드 전에 서버에서 실행되기 때문에'id'는 현재 컨텍스트에 존재하지 않습니다. –