2013-03-26 6 views
2

Я пишу контрольный список для механики, поэтому все использует переключатели и вытаскивает меню (бла!). Там может быть более 50 элементов, поэтому переданные значения в URL-адресе будут беспорядочными. Если я отправлю форму с помощью POST, все значения переменных передаются, но мне нужно использовать Response.Redirect, чтобы получить форму для записи в базу данных и которая блокирует передачу переменных на следующую страницу. Я попробовал обновление META и Response.StatusCode = 307; но пока ничего не работает. Вот страница один ....Альтернатива Response.Redirect в Webmatrix

@{ 

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> 
     &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp 

     <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>&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &rlm; &nbsp Head Lights:</label> 
    <input type="RADIO" name="HEADLIGHTS" value="GOOD"/>GOOD &nbsp &nbsp 
    <input type="RADIO" name="HEADLIGHTS" value="BAD"/>BAD 

    </br> 
    <label>&nbsp Tail/Stop/Signal/Hazard:</label> 
    <input type="RADIO" name="TailStopSignalHazard" value="GOOD"/>GOOD &nbsp &nbsp 
    <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> 
    &nbsp &nbsp &nbsp &nbsp the unit number was="@Request["UNITNO"]" 
    </body> 

     </html> 

Я новичок в WebMatrix и новичку по сценарию, поэтому, пожалуйста, извините мое невежество. Я надеюсь, что у кого-то есть простое решение моей проблемы, также я пробовал глобальные переменные, но либо я не отформатировал его должным образом, либо он тоже не работает. Спасибо за прочтение!

+0

является намерением на второй странице, что вы видите список всех UnitID о том, что когда-либо было проверено? Так выглядит, что он закодирован с помощью «Select * from ...» без предложения WHERE. – Knox

+0

Да, это правильно. Тем не менее, это всего лишь временная страница, чтобы проверить, что я написал данные в базу данных и что я перенес значение переменной «UNITNO», на фактическом веб-сайте будет отображаться еще много элементов в контрольном списке, и результирующая страница спросит для объяснения каждого элемента, отмеченного как BAD, затем отправьте эту информацию менеджеру. –

ответ

0

Вы могли бы передать некоторые данные второго сценария на перенаправлении:

Response.Redirect("list.cshtml?UNITNO=" + Request.Form["UNITNO"]); 

Но если вам нужно отправить много данных, которые могут запутаться. Что может быть лучше, так это отправить идентификатор базы данных вновь созданной записи. Затем вы можете открыть его снова на второй сценарий и читать и отображать любые данные, которые вы хотите:

Response.Redirect("list.cshtml?id=" + db.GetLastInsertId()); 

Мое общее правило заключается в том, что если я делаю редирект и нужно сохранить данные, которые я, вероятно, следует подумать о рефакторинга код, чтобы не требовать его, если это вообще возможно, но решение выше должно работать.

0

Попробуйте

Response.Redirect("list.cshtml/" + Request.Form["UNITNO"]); 

Я обнаружил, что использование

Response.Redirect("list.cshtml?UNITNO=" + Request.Form["UNITNO"]); 

делает работу, но если вы используете уаг UNITNO в начале вашей формы, то URL будет проходить list.cshtml = Unito ххх независимо UNITNO который не всегда проходит в зависимости от того, как вы получаете URL var в своей форме.

Просто замените? UNITNO простым запросом, и тогда запрос подходит для меня.

Но ответ, данный уже будет работать, поэтому я его сбиваю, но я обнаружил, что у меня были проблемы и адаптировал оригинальный ответ с помощью этого метода, который работал на меня.

Надеется, что это помогает

Смежные вопросы