UnobtrusiveJavaScriptEnabled、ClientValidationEnabled(轉載)
UnobtrusiveJavaScriptEnabled:不顯眼的JavaScript
ClientValidationEnabled:啟動客戶端驗證
轉載來源二:http://www.voidcn.com/article/p-tiuqwvhe-buh.html
我很好奇UnobtrusiveJavaScriptEnabled對.NET框架意味著什麼.我正在開發一個專案,作為在後端使用.NET的前端開發人員.在與開發人員(也管理伺服器)合作時,他提到我們的專案必須將UnobtrusiveJavaScript設定為false.也就是說,專案的web.config應該具有以下內容:
<appSettings>
...
< add key="UnobtrusiveJavaScriptEnabled" value="false" />
</appSettings>
我的第一反應是這是不好的做法,但是當我進一步思考它時,我意識到我並不真正理解為什麼.NET甚至會在專案層面開始這樣的設定,或者它是否對於我們的特定專案.
從here開始:The purpose of that setting is explained by Brad Wilson in his post 07001. Putting it short – with this setting turned off client side validation is being performed using Microsoft javascript libraries (the same way it was performed in ASP.NET MVC 1 and 2). Otherwise (with setting turned on) client side validation is performed using JQuery Validate.
翻譯:布拉德·威爾遜(Brad Wilson)在其博文07001中解釋了這種設定的目的。簡而言之,關閉此設定後,客戶端驗證將使用Microsoft javascript庫執行(與在ASP.NET MVC 1和2中執行的方式相同)。否則(在設定開啟的情況下)使用JQuery Validate執行客戶端驗證。
換句話說,您的應用程式可能具有依賴於執行驗證的Microsoft JavaScript庫的程式碼.
轉載來源一:https://www.it1352.com/49361.html
我正在使用 MVC3 razor 做一個示例,並寫道:
<p> 顯示時間: @Ajax.ActionLink("UTC", "GetTime", new { zone = "utc" }, new AjaxOptions { UpdateTargetId = "myResults" })@Ajax.ActionLink("BST", "GetTime", new { zone = "bst" }, new AjaxOptions { UpdateTargetId = "myResults" }) @Ajax.ActionLink("MDT", "GetTime", new { zone = "mdt" }, new AjaxOptions { UpdateTargetId = "myResults" }) </p> <div id="myResults" style="border: 2px 紅色虛線; padding: .5em;"> 結果將顯示在此處 </div> <p> 此頁面是在 @DateTime.UtcNow.ToString("h:MM:ss tt") (UTC) 生成的 </p>
我所有的 ajax 呼叫都不起作用,直到我在 web.config 中更改了這個鍵:
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
我在這篇文章中讀到的內容:http://weblogs.asp.net/owscott/archive/2010/11/17/mvc-3-ajax-redirecting-instead-of-updating-div.aspx
但現在我所有的客戶端 cide 驗證不像以前那樣工作。
我的問題是:如何使 ajax 程式碼同時工作和客戶端驗證?這個關於“UnobtrusiveJavaScriptEnabled”的屬性是什麼?是他們之間的切換嗎?!我希望能用簡單的語言更深入地瞭解它。
解決方案在 ASP.NET MVC 3 中有兩件事:客戶端驗證和不顯眼的 javascript,它們由它們在 web.config 中的相應值控制:
<add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" />
客戶端驗證基於 jquery.validate.js 外掛以及來自 Microsoft 的 jquery.validate.unobtrusive.js 指令碼。當您將這兩個指令碼包含在包含 HTML 表單的檢視中時,客戶端驗證將根據您在模型上定義的資料註釋規則執行。當您檢視檢視生成的 HTML 原始碼時,您會注意到輸入欄位具有包含驗證規則的 HTML5 data-* 屬性。然後,Microsoft 非侵入式驗證指令碼將讀取這些規則並配置 jquery 驗證外掛。
不顯眼的javascript是不同的。它基於jquery。當您在 ASP.NET MVC 3 中使用 Ajax.* HTML 助手之一(例如 Ajax.ActionLink)時,這些助手還會在相應的錨點上發出 HTML5 data-* 屬性。這些屬性然後由 Microsoft jquery.unobtrusive-ajax.js 指令碼解釋,您需要將其包含在您的頁面中並對這些連結進行 AJAX 化。例如,當你寫:
@Ajax.ActionLink("UTC", "GetTime", new { zone = "utc" }, new AjaxOptions { UpdateTargetId = "myResults" })
這將生成以下 HTML:
<a data-ajax="true" data-ajax-mode="replace" data-ajax-update="#myResults" href="/Home/GetTime?zone=utc">UTC</a>
正如您現在看到的,有關如何執行 AJAX 請求的所有資訊都包含在 DOM 中。因此,您可以有一個單獨的 javascript 檔案,您可以在其中訂閱此連結的點選事件,向包含在 href 屬性中的 url 傳送 AJAX 請求,然後根據 data-ajax-mode 屬性的值替換 html一些帶有 id 的容器包含在 data-ajax-update 屬性選擇器中。而這正是 jquery.unobtrusive-ajax.js 所做的。只是它在一個單獨的檔案中,並且您的標記和 javascript 是獨立的,這在以前的版本中並非如此。
因此,與 ASP.NET MVC 1 和 2 不同,在 ASP.NET MVC 3 中,jQuery 是預設的 javascript 框架,而 HTML 助手基於它。不再使用所有 MicrosoftAjax* 指令碼。