![](/img/trans.png)
[英]Error on Calling Response.Redirect in the WebService Event Response
[英]Alternative to Response.Redirect in Webmatrix
我正在為機械師編寫一份檢查清單,以便所有內容都使用單選按鈕並下拉菜單(等等!)。 可能有50多個項目,因此在url中傳遞值會很混亂。 如果我通過POST發送表單,則所有變量值都會傳遞,但是我需要使用Response.Redirect來將表單寫入數據庫,這會阻止變量傳遞到下一頁。 我已經嘗試過META刷新和Response.StatusCode = 307; 但到目前為止沒有任何效果。 這是第一頁。
@{
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"]);
但是,如果您需要發送大量數據,則可能會變得混亂。 更好的方法是發送新創建記錄的數據庫ID。 然后,您可以在第二個腳本上再次將其打開,並讀取並顯示所需的任何數據:
Response.Redirect("list.cshtml?id=" + db.GetLastInsertId());
我自己的一般規則是,如果我要進行重定向並需要維護數據,我可能應該考慮將代碼重構為盡可能不要求它-但上述解決方案應該可行。
嘗試
Response.Redirect("list.cshtml/" + Request.Form["UNITNO"]);
我發現使用
Response.Redirect("list.cshtml?UNITNO=" + Request.Form["UNITNO"]);
確實可以,但是如果您在表單的開頭使用var UNITNO,則URL將通過list.cshtml = UNITO xxx,無論UNITNO是什么,但並不總是通過,具體取決於您如何從表單中獲取URL var。
只需用一個簡單的/ UNITNO替換/即可,該請求對我來說效果很好。
但是給出的答案也可以使用,所以我敲了一下,但是我發現自己遇到了問題,並用適合我的這種方法修改了原始答案。
希望這可以幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.