메 커닉에 대한 체크리스트를 작성하기 때문에 모든 것이 라디오 버튼을 사용하고 메뉴를 끌어 올립니다 (blah!). 50 개가 넘는 항목이있을 수 있으므로 URL에 전달되는 값은 지저분해질 수 있습니다. POST를 사용하여 양식을 보내면 모든 변수 값이 전달되지만 Response.Redirect를 사용하여 양식을 데이터베이스에 작성해야하고 변수가 다음 페이지로 전달되는 것을 차단합니다. META 새로 고침과 Response.StatusCode = 307 시도했습니다; 그러나 지금까지 아무것도 작동하지 않습니다. 다음 페이지 하나 ....Webmatrix의 Response.Redirect에 대한 대체물
@{
var UNITNO = "";
var DATE = DateTime.Now;
var MECHANIC = "";
var HEADLIGHTS = "";
var TailStopSignalHazard = "";
if(IsPost)
{
UNITNO = Request.Form["UNITNO"];
MECHANIC = Request.Form["MECHANIC"];
HEADLIGHTS = Request.Form["HEADLIGHTS"];
TailStopSignalHazard = Request.Form["TailStopSignalHazard"];
var db = Database.Open("MAINT");
var insertCommand = "INSERT INTO CHECKLIST (UNITNO, DATE, MECHANIC, HEADLIGHTS, TailStopSignalHazard) Values(@0, @1, @2, @3 ,@4)";
db.Execute(insertCommand, UNITNO, DATE, MECHANIC, HEADLIGHTS, TailStopSignalHazard);
Response.StatusCode = 307;
Response.Redirect("list.cshtml");
//<META http-equiv="REFRESH" content="0; url=list.cshtml">
}
<script type="text/javascript">
function validateForm() {
var aa = document.getElementById("UNITNO");
var ac = document.getElementById("MECHANIC");
var xx = document.getElementsByName("HEADLIGHTS");
var xz = document.getElementsByName("TailStopSignalHazard");
if (aa.options[aa.selectedIndex].index == 0) { alert("Must enter Unit Number"); return false; }
if (ac.options[ac.selectedIndex].index == 0) { alert("Must enter Mechanic"); return false; }
if (xx[0].checked == false && xx[1].checked == false) { alert("Must enter Headlights"); return false; }
if (xz[0].checked == false && xz[1].checked == false) { alert("Must enter Tail/Stop/Signal/Hazard"); return false; }
}
</script>
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Western Check List</title>
</head>
<body>
<h1>Western Disposal</h1>
<!-- <form method="post" onsubmit="return validateForm()" action="list.cshtml"> //-->
<form method="post" onsubmit="return validateForm()">
<fieldset>
<legend>Check List</legend>
           
<script>
date=Date()
document.write(date)
</script>
<p>
<label> Unit Number: </label>
<select name="UNITNO">
<option value=""></option>
<option value="108">108</option>
<option value="110">110</option>
<option value="111">111</option>
</select>
</p>
<p>
<label>Mechanic:</label>
<select name="MECHANIC" >
<option value=""></option>
<option value="BOB">BOB</option>
<option value="DANIEL">DANIEL</option>
<option value="DOUG">DOUG</option>
</select>
</p>
<p>
<b> LIGHTING: </b>
</br>
<label>                  ‏   Head Lights:</label>
<input type="RADIO" name="HEADLIGHTS" value="GOOD"/>GOOD    
<input type="RADIO" name="HEADLIGHTS" value="BAD"/>BAD
</br>
<label>  Tail/Stop/Signal/Hazard:</label>
<input type="RADIO" name="TailStopSignalHazard" value="GOOD"/>GOOD    
<input type="RADIO" name="TailStopSignalHazard" value="BAD"/>BAD
</p>
<p><input type="submit" value="POST"/></p>
</fieldset>
</form>
</body>
</html>
입니다 그리고 나는 데이터베이스와이에 두 페이지에 "UNITNO"값 ...
@{
var db=Database.Open("MAINT");
var grid=new WebGrid(db.Query("SELECT * FROM CHECKLIST ORDER BY ID"));
}
<!DOCTYPE html>
<html>
<head>
<title>Western Check List Data Base</title>
<style type="text/css">
table {border-collapse: collapse;}
td, th {border: solid 1px; }
</style>
</head>
<body>
<h1>Western Check List Data Base</h1>
@grid.GetHtml()
<a href="Default.cshtml">RETURN</a>
        the unit number was="@Request["UNITNO"]"
</body>
</html>
내가 webmatrix에 새로운 오전 초보자를 확인 대본에서 그러니 내 무지를 용서해주십시오. 내 희망은 누군가가 내 문제에 대한 간단한 해결책을 가지고 있으며 또한 전역 변수를 시도했지만 제대로 포맷하지 않았거나 작동하지 않는다는 것입니다. 읽어 주셔서 감사합니다!
Response.Redirect("list.cshtml?UNITNO=" + Request.Form["UNITNO"]);
을하지만 많은 양의 데이터를 전송해야하는 경우, 그 지저분한 얻을 수 :
은 두 번째 페이지의 의도이며, 지금까지 확인 된 모든 unitID의 목록을 볼 수 있습니까? 이것이 WHERE 절이없는 "Select * from ..."으로 코딩 된 것처럼 보입니다. – Knox
예, 맞습니다. 그러나 그것은 데이터베이스에 데이터를 썼는지 확인하기위한 임시 페이지 일 뿐이며 숨겨진 변수 "UNITNO"의 값을 넘겼습니다. 실제 웹 사이트는 체크리스트에 더 많은 항목을 포함 할 것이고 결과 페이지에는 BAD로 확인 된 각 항목에 대한 설명을 보려면 해당 정보를 관리자에게 전자 메일로 보내십시오. –