2011-06-02 21 views
0

我期待看到任何人都可以通知我以下功能的MVC最佳實踐。MVC最佳實踐日期更改可能重定向

用戶可以創建表單,指定日期和其他提交的詳細信息。在完成表單的同時,如果用戶更改日期字段,我希望應用程序檢查該日期的表單是否已存在,然後(通過消息框)詢問用戶是否希望加載它。如果表單不存在,我只需要將日期更改排除在外。

這應該是某種Ajax請求?

回答

0

在一個理想的世界,你會支持以下2種情況:

1)服務器端檢查/驗證步驟是,在提交表格,同日的另一種形式的發現,將重定向用戶回到原來的提交頁面(沒有任何數據丟失),通知他們可能的重複,並讓他們選擇從那裏加載表單。

2)客戶端AJAX請求將日期提交給服務器,詢問基本問題「我們是否已經有這個日期的表單」,並且如果是,則給它們從那裏加載的選項。這個選項很好,因爲它讓用戶知道(也許在他們完成填寫表單的所有手工操作之前),還有另一個已經輸入的內容。您的用戶將非常感謝您節省時間,並保存到服務器的往返旅程。

你不能依靠任何JavaScript的異步請求強制執行您的業務規則爲你,因爲這可以很容易規避,都有意或無意地(通過用戶禁用JavaScript)

+0

感謝您的迴應! 我已經將選項1進一步擴展到了範圍,返回控制器中是否存在窗體的結果。我想我只是想知道什麼是通知/詢問用戶的最佳方式。我想可能是一個新出現的操作鏈接,用於加載已經存在的表單(帶有一條消息),以及如果用戶選擇不使用這個並且仍然選擇一個已經存在的日期,則會出現相同的查找循環。我只是試圖保持關注的分離儘可能正確,並且希望避免將其他表單的ID帶入我的視圖模型。 – user676767 2011-06-02 20:01:42

+0

好吧 - 我已經選擇了1.我已經把一個屬性放到我的視圖模型中作爲重複的頁面,並且返回到帶有這個屬性集合的視圖,這會導致視圖呈現'Load other form '動作鏈接,點擊後重定向到帶有重複ID的編輯控制器方法。 – user676767 2011-06-02 20:28:55

+0

@ user676767聽起來不錯! – Matt 2011-06-02 20:55:44

0

使用jQuery與MVC 3遠程驗證。這將從你的控制器方法返回一個錯誤消息(如果你不返回true或false,而是一個字符串,這是一個通用的演示,但它應該給你一個想法,你仍然需要在服務器上驗證以及馬特說,但我想提供此作爲額外的'如何'細節上述項目#1

 
    [RegularExpression(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", ErrorMessage = "Please enter a valid e-mail address")] 
     [Required()] 
     [Display(Name = "Email Address")] 
     [Remote("EmailAddressUsed", "Demo", ErrorMessage = "Email Address Already On File")] 
     public string EmailAddress { get; set; } 

在您的控制器中

 
     public JsonResult EmailAddressUsed(string emailAddress) 
     { 
      if (emailAddress == "[email protected]") 
      { 
       return Json(emailAddress + " is already in use.", JsonRequestBehavior.AllowGet); 

      } 
      else 
      { 
       return Json(true, JsonRequestBehavior.AllowGet); 

      } 

     }