我有一個MVC控制器,可以通過表單提交在幾個不同的地方被稱爲正常工作。然後,控制器呈現一個視圖,其主要目的是允許用戶發送文檔或將其發佈到外部網站,並填寫將用於通知電子郵件的文本字段。MVC控件不無刷新頁面
我對這些領域進行驗證 - 用戶可以輸入自定義主題/正文。如果他們不這樣做,他們會收到一個彈出提醒,並可以返回到表單或使用佔位符值中指示的默認文本提交。
的問題是,當用戶第一次到達這個頁面,點擊發送按鈕,在文本框中輸入沒有實際註冊和它給空字符串通知,無論什麼是真正的領域;然而,如果我打F5並再試一次,輸入完美地工作。
我覺得這事做與最初通過調用POST操作正在做這個控制器,而它似乎很好地工作在頁面刷新獲取表單提交。我無法弄清楚如何在通過POST調用控制器時讓內容正確響應,或者如何在不發佈數據的情況下提交表單。
預先感謝閱讀和任何幫助。
這裏是呼叫控制器:
public ActionResult Index(FormCollection collection)
{
//modelbuilding code
return View (Model);
}
調用控制器始終使用此格式的代碼。(在這種情況下,它會從收件人/索引視圖稱爲
@using(Html.BeginForm("Index", "Distribution", FormMethod.Post)) {
//form values
<input type="submit" data-role="button" value="Done"/>
}
這裏是視圖的相關部分和JS驗證功能:
<div id="SubjectTemplate">
<p>Subject: <input id="emailSubjectTextBox" name="EmailSubject" placeholder="@EmailSubject" /></p>
</div>
<a href="javascript:validateInput();">Send Notification</a>
<script>
function validateInput() {
var possibleErrors = [];
if (!(document.getElementById('emailSubjectTextBox').value)) {
possibleErrors.push('@incompleteEmailSubject' + '\n');
}
//more validation that works the same way and has the same problem
if (possibleErrors.length > 0) {
if (confirm(possibleErrors))
{
window.location.href = '@Url.Action("Send")'
}
}
else {
window.location.href = '@Url.Action("Send")'
}
}
</script>
嗯。有問題的控件仍然沒有正確響應,雖然這確實幫助我清理了一些代碼冗餘,所以非常感謝。 – gutsmania
很高興我可以得到一些幫助。我還發現可以幫助的是嘗試隔離導致問題的代碼。要麼開始一個新項目,要麼舉一個工作示例,一次處理一行內容。如果你慢慢做,你會發現導致你麻煩的線或區域。祝你好運! –